mtg_data/
keyword_ability.rs

1#[derive(idris_derive::Idris)]
2#[idris(repr = usize)]
3#[derive(serde::Serialize, serde::Deserialize)]
4#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash, PartialOrd, Ord)]
5#[cfg_attr(feature = "ts_export", derive(ts_rs::TS))]
6pub enum KeywordAbility {
7    Absorb,
8    Affinity,
9    Afflict,
10    Afterlife,
11    Aftermath,
12    Amplify,
13    Annihilator,
14    Ascend,
15    Assist,
16    Augment,
17    AuraSwap,
18    Awaken,
19    Backup,
20    Banding,
21    Bargain,
22    BasicLandcycling,
23    BattleCry,
24    Bestow,
25    Blitz,
26    Bloodthirst,
27    Boast,
28    Bushido,
29    Buyback,
30    Cascade,
31    Casualty,
32    Champion,
33    Changeling,
34    ChooseABackground,
35    Cipher,
36    Cleave,
37    CommanderNinjutsu,
38    Companion,
39    Compleated,
40    Conspire,
41    Convoke,
42    Craft,
43    Crew,
44    CumulativeUpkeep,
45    Cycling,
46    Dash,
47    Daybound,
48    Deathtouch,
49    Decayed,
50    Defender,
51    Delve,
52    Demonstrate,
53    Desertwalk,
54    Dethrone,
55    Devoid,
56    Devour,
57    Disguise,
58    Disturb,
59    DoctorsCompanion,
60    DoubleAgenda,
61    DoubleStrike,
62    DoubleTeam,
63    Dredge,
64    Echo,
65    Embalm,
66    Emerge,
67    Enchant,
68    Encore,
69    Enlist,
70    Entwine,
71    Epic,
72    Equip,
73    Escalate,
74    Escape,
75    Eternalize,
76    Evoke,
77    Evolve,
78    Exalted,
79    Exhaust,
80    Exploit,
81    Extort,
82    Fabricate,
83    Fading,
84    Fear,
85    FirstStrike,
86    Flanking,
87    Flash,
88    Flashback,
89    Flying,
90    ForMirrodin,
91    Forecast,
92    Forestcycling,
93    Forestwalk,
94    Foretell,
95    Fortify,
96    Freerunning,
97    Frenzy,
98    FriendsForever,
99    Fuse,
100    Gift,
101    Graft,
102    Gravestorm,
103    Harmonize,
104    Haste,
105    Haunt,
106    Hexproof,
107    HexproofFrom,
108    HiddenAgenda,
109    Hideaway,
110    Horsemanship,
111    Impending,
112    Improvise,
113    Indestructible,
114    Infect,
115    Ingest,
116    Intensity,
117    Intimidate,
118    Islandcycling,
119    Islandwalk,
120    JobSelect,
121    JumpStart,
122    Kicker,
123    Landcycling,
124    Landwalk,
125    LegendaryLandwalk,
126    LevelUp,
127    Lifelink,
128    LivingMetal,
129    LivingWeapon,
130    Madness,
131    MaxSpeed,
132    Mayhem,
133    Megamorph,
134    Melee,
135    Menace,
136    Mentor,
137    Miracle,
138    Mobilize,
139    Modular,
140    MoreThanMeetsTheEye,
141    Morph,
142    Mountaincycling,
143    Mountainwalk,
144    Multikicker,
145    Mutate,
146    Myriad,
147    Nightbound,
148    Ninjutsu,
149    NonbasicLandwalk,
150    Offering,
151    Offspring,
152    Outlast,
153    Overload,
154    Partner,
155    PartnerWith,
156    Persist,
157    Phasing,
158    Plainscycling,
159    Plainswalk,
160    Poisonous,
161    Protection,
162    Prototype,
163    Provoke,
164    Prowess,
165    Prowl,
166    Rampage,
167    Ravenous,
168    Reach,
169    ReadAhead,
170    Rebound,
171    Reconfigure,
172    Recover,
173    Reinforce,
174    Renown,
175    Replicate,
176    Retrace,
177    Riot,
178    Ripple,
179    Saddle,
180    Scavenge,
181    Shadow,
182    Shroud,
183    Skulk,
184    Slivercycling,
185    Soulbond,
186    Soulshift,
187    Specialize,
188    Spectacle,
189    Splice,
190    SplitSecond,
191    Spree,
192    Squad,
193    Station,
194    Storm,
195    Sunburst,
196    Surge,
197    Suspend,
198    Swampcycling,
199    Swampwalk,
200    Toxic,
201    Training,
202    Trample,
203    Transfigure,
204    Transmute,
205    Tribute,
206    Typecycling,
207    UmbraArmor,
208    Undaunted,
209    Undying,
210    Unearth,
211    Unleash,
212    Vanishing,
213    Vigilance,
214    Ward,
215    Warp,
216    WebSlinging,
217    Wither,
218    Wizardcycling,
219}
220
221impl std::str::FromStr for KeywordAbility {
222    type Err = crate::ParsingError;
223    fn from_str(s: &str) -> Result<Self, Self::Err> {
224        match s {
225            "absorb" => Ok(Self::Absorb),
226            "affinity" => Ok(Self::Affinity),
227            "afflict" => Ok(Self::Afflict),
228            "afterlife" => Ok(Self::Afterlife),
229            "aftermath" => Ok(Self::Aftermath),
230            "amplify" => Ok(Self::Amplify),
231            "annihilator" => Ok(Self::Annihilator),
232            "ascend" => Ok(Self::Ascend),
233            "assist" => Ok(Self::Assist),
234            "augment" => Ok(Self::Augment),
235            "aura swap" => Ok(Self::AuraSwap),
236            "awaken" => Ok(Self::Awaken),
237            "backup" => Ok(Self::Backup),
238            "banding" => Ok(Self::Banding),
239            "bargain" => Ok(Self::Bargain),
240            "basic landcycling" => Ok(Self::BasicLandcycling),
241            "battle cry" => Ok(Self::BattleCry),
242            "bestow" => Ok(Self::Bestow),
243            "blitz" => Ok(Self::Blitz),
244            "bloodthirst" => Ok(Self::Bloodthirst),
245            "boast" => Ok(Self::Boast),
246            "bushido" => Ok(Self::Bushido),
247            "buyback" => Ok(Self::Buyback),
248            "cascade" => Ok(Self::Cascade),
249            "casualty" => Ok(Self::Casualty),
250            "champion" => Ok(Self::Champion),
251            "changeling" => Ok(Self::Changeling),
252            "choose a background" => Ok(Self::ChooseABackground),
253            "cipher" => Ok(Self::Cipher),
254            "cleave" => Ok(Self::Cleave),
255            "commander ninjutsu" => Ok(Self::CommanderNinjutsu),
256            "companion" => Ok(Self::Companion),
257            "compleated" => Ok(Self::Compleated),
258            "conspire" => Ok(Self::Conspire),
259            "convoke" => Ok(Self::Convoke),
260            "craft" => Ok(Self::Craft),
261            "crew" => Ok(Self::Crew),
262            "cumulative upkeep" => Ok(Self::CumulativeUpkeep),
263            "cycling" => Ok(Self::Cycling),
264            "dash" => Ok(Self::Dash),
265            "daybound" => Ok(Self::Daybound),
266            "deathtouch" => Ok(Self::Deathtouch),
267            "decayed" => Ok(Self::Decayed),
268            "defender" => Ok(Self::Defender),
269            "delve" => Ok(Self::Delve),
270            "demonstrate" => Ok(Self::Demonstrate),
271            "desertwalk" => Ok(Self::Desertwalk),
272            "dethrone" => Ok(Self::Dethrone),
273            "devoid" => Ok(Self::Devoid),
274            "devour" => Ok(Self::Devour),
275            "disguise" => Ok(Self::Disguise),
276            "disturb" => Ok(Self::Disturb),
277            "doctor's companion" => Ok(Self::DoctorsCompanion),
278            "double agenda" => Ok(Self::DoubleAgenda),
279            "double strike" => Ok(Self::DoubleStrike),
280            "double team" => Ok(Self::DoubleTeam),
281            "dredge" => Ok(Self::Dredge),
282            "echo" => Ok(Self::Echo),
283            "embalm" => Ok(Self::Embalm),
284            "emerge" => Ok(Self::Emerge),
285            "enchant" => Ok(Self::Enchant),
286            "encore" => Ok(Self::Encore),
287            "enlist" => Ok(Self::Enlist),
288            "entwine" => Ok(Self::Entwine),
289            "epic" => Ok(Self::Epic),
290            "equip" => Ok(Self::Equip),
291            "escalate" => Ok(Self::Escalate),
292            "escape" => Ok(Self::Escape),
293            "eternalize" => Ok(Self::Eternalize),
294            "evoke" => Ok(Self::Evoke),
295            "evolve" => Ok(Self::Evolve),
296            "exalted" => Ok(Self::Exalted),
297            "exhaust" => Ok(Self::Exhaust),
298            "exploit" => Ok(Self::Exploit),
299            "extort" => Ok(Self::Extort),
300            "fabricate" => Ok(Self::Fabricate),
301            "fading" => Ok(Self::Fading),
302            "fear" => Ok(Self::Fear),
303            "first strike" => Ok(Self::FirstStrike),
304            "flanking" => Ok(Self::Flanking),
305            "flash" => Ok(Self::Flash),
306            "flashback" => Ok(Self::Flashback),
307            "flying" => Ok(Self::Flying),
308            "for mirrodin!" => Ok(Self::ForMirrodin),
309            "forecast" => Ok(Self::Forecast),
310            "forestcycling" => Ok(Self::Forestcycling),
311            "forestwalk" => Ok(Self::Forestwalk),
312            "foretell" => Ok(Self::Foretell),
313            "fortify" => Ok(Self::Fortify),
314            "freerunning" => Ok(Self::Freerunning),
315            "frenzy" => Ok(Self::Frenzy),
316            "friends forever" => Ok(Self::FriendsForever),
317            "fuse" => Ok(Self::Fuse),
318            "gift" => Ok(Self::Gift),
319            "graft" => Ok(Self::Graft),
320            "gravestorm" => Ok(Self::Gravestorm),
321            "harmonize" => Ok(Self::Harmonize),
322            "haste" => Ok(Self::Haste),
323            "haunt" => Ok(Self::Haunt),
324            "hexproof" => Ok(Self::Hexproof),
325            "hexproof from" => Ok(Self::HexproofFrom),
326            "hidden agenda" => Ok(Self::HiddenAgenda),
327            "hideaway" => Ok(Self::Hideaway),
328            "horsemanship" => Ok(Self::Horsemanship),
329            "impending" => Ok(Self::Impending),
330            "improvise" => Ok(Self::Improvise),
331            "indestructible" => Ok(Self::Indestructible),
332            "infect" => Ok(Self::Infect),
333            "ingest" => Ok(Self::Ingest),
334            "intensity" => Ok(Self::Intensity),
335            "intimidate" => Ok(Self::Intimidate),
336            "islandcycling" => Ok(Self::Islandcycling),
337            "islandwalk" => Ok(Self::Islandwalk),
338            "job select" => Ok(Self::JobSelect),
339            "jump-start" => Ok(Self::JumpStart),
340            "kicker" => Ok(Self::Kicker),
341            "landcycling" => Ok(Self::Landcycling),
342            "landwalk" => Ok(Self::Landwalk),
343            "legendary landwalk" => Ok(Self::LegendaryLandwalk),
344            "level up" => Ok(Self::LevelUp),
345            "lifelink" => Ok(Self::Lifelink),
346            "living metal" => Ok(Self::LivingMetal),
347            "living weapon" => Ok(Self::LivingWeapon),
348            "madness" => Ok(Self::Madness),
349            "max speed" => Ok(Self::MaxSpeed),
350            "mayhem" => Ok(Self::Mayhem),
351            "megamorph" => Ok(Self::Megamorph),
352            "melee" => Ok(Self::Melee),
353            "menace" => Ok(Self::Menace),
354            "mentor" => Ok(Self::Mentor),
355            "miracle" => Ok(Self::Miracle),
356            "mobilize" => Ok(Self::Mobilize),
357            "modular" => Ok(Self::Modular),
358            "more than meets the eye" => Ok(Self::MoreThanMeetsTheEye),
359            "morph" => Ok(Self::Morph),
360            "mountaincycling" => Ok(Self::Mountaincycling),
361            "mountainwalk" => Ok(Self::Mountainwalk),
362            "multikicker" => Ok(Self::Multikicker),
363            "mutate" => Ok(Self::Mutate),
364            "myriad" => Ok(Self::Myriad),
365            "nightbound" => Ok(Self::Nightbound),
366            "ninjutsu" => Ok(Self::Ninjutsu),
367            "nonbasic landwalk" => Ok(Self::NonbasicLandwalk),
368            "offering" => Ok(Self::Offering),
369            "offspring" => Ok(Self::Offspring),
370            "outlast" => Ok(Self::Outlast),
371            "overload" => Ok(Self::Overload),
372            "partner" => Ok(Self::Partner),
373            "partner with" => Ok(Self::PartnerWith),
374            "persist" => Ok(Self::Persist),
375            "phasing" => Ok(Self::Phasing),
376            "plainscycling" => Ok(Self::Plainscycling),
377            "plainswalk" => Ok(Self::Plainswalk),
378            "poisonous" => Ok(Self::Poisonous),
379            "protection" => Ok(Self::Protection),
380            "prototype" => Ok(Self::Prototype),
381            "provoke" => Ok(Self::Provoke),
382            "prowess" => Ok(Self::Prowess),
383            "prowl" => Ok(Self::Prowl),
384            "rampage" => Ok(Self::Rampage),
385            "ravenous" => Ok(Self::Ravenous),
386            "reach" => Ok(Self::Reach),
387            "read ahead" => Ok(Self::ReadAhead),
388            "rebound" => Ok(Self::Rebound),
389            "reconfigure" => Ok(Self::Reconfigure),
390            "recover" => Ok(Self::Recover),
391            "reinforce" => Ok(Self::Reinforce),
392            "renown" => Ok(Self::Renown),
393            "replicate" => Ok(Self::Replicate),
394            "retrace" => Ok(Self::Retrace),
395            "riot" => Ok(Self::Riot),
396            "ripple" => Ok(Self::Ripple),
397            "saddle" => Ok(Self::Saddle),
398            "scavenge" => Ok(Self::Scavenge),
399            "shadow" => Ok(Self::Shadow),
400            "shroud" => Ok(Self::Shroud),
401            "skulk" => Ok(Self::Skulk),
402            "slivercycling" => Ok(Self::Slivercycling),
403            "soulbond" => Ok(Self::Soulbond),
404            "soulshift" => Ok(Self::Soulshift),
405            "specialize" => Ok(Self::Specialize),
406            "spectacle" => Ok(Self::Spectacle),
407            "splice" => Ok(Self::Splice),
408            "split second" => Ok(Self::SplitSecond),
409            "spree" => Ok(Self::Spree),
410            "squad" => Ok(Self::Squad),
411            "station" => Ok(Self::Station),
412            "storm" => Ok(Self::Storm),
413            "sunburst" => Ok(Self::Sunburst),
414            "surge" => Ok(Self::Surge),
415            "suspend" => Ok(Self::Suspend),
416            "swampcycling" => Ok(Self::Swampcycling),
417            "swampwalk" => Ok(Self::Swampwalk),
418            "toxic" => Ok(Self::Toxic),
419            "training" => Ok(Self::Training),
420            "trample" => Ok(Self::Trample),
421            "transfigure" => Ok(Self::Transfigure),
422            "transmute" => Ok(Self::Transmute),
423            "tribute" => Ok(Self::Tribute),
424            "typecycling" => Ok(Self::Typecycling),
425            "umbra armor" => Ok(Self::UmbraArmor),
426            "undaunted" => Ok(Self::Undaunted),
427            "undying" => Ok(Self::Undying),
428            "unearth" => Ok(Self::Unearth),
429            "unleash" => Ok(Self::Unleash),
430            "vanishing" => Ok(Self::Vanishing),
431            "vigilance" => Ok(Self::Vigilance),
432            "ward" => Ok(Self::Ward),
433            "warp" => Ok(Self::Warp),
434            "web-slinging" => Ok(Self::WebSlinging),
435            "wither" => Ok(Self::Wither),
436            "wizardcycling" => Ok(Self::Wizardcycling),
437            _ => Err(crate::ParsingError {
438                item: "KeywordAbility",
439                message: "provided source does not match",
440            }),
441        }
442    }
443}
444
445impl KeywordAbility {
446    pub fn as_str(&self) -> &'static str {
447        match self {
448            Self::Absorb => "absorb",
449            Self::Affinity => "affinity",
450            Self::Afflict => "afflict",
451            Self::Afterlife => "afterlife",
452            Self::Aftermath => "aftermath",
453            Self::Amplify => "amplify",
454            Self::Annihilator => "annihilator",
455            Self::Ascend => "ascend",
456            Self::Assist => "assist",
457            Self::Augment => "augment",
458            Self::AuraSwap => "aura swap",
459            Self::Awaken => "awaken",
460            Self::Backup => "backup",
461            Self::Banding => "banding",
462            Self::Bargain => "bargain",
463            Self::BasicLandcycling => "basic landcycling",
464            Self::BattleCry => "battle cry",
465            Self::Bestow => "bestow",
466            Self::Blitz => "blitz",
467            Self::Bloodthirst => "bloodthirst",
468            Self::Boast => "boast",
469            Self::Bushido => "bushido",
470            Self::Buyback => "buyback",
471            Self::Cascade => "cascade",
472            Self::Casualty => "casualty",
473            Self::Champion => "champion",
474            Self::Changeling => "changeling",
475            Self::ChooseABackground => "choose a background",
476            Self::Cipher => "cipher",
477            Self::Cleave => "cleave",
478            Self::CommanderNinjutsu => "commander ninjutsu",
479            Self::Companion => "companion",
480            Self::Compleated => "compleated",
481            Self::Conspire => "conspire",
482            Self::Convoke => "convoke",
483            Self::Craft => "craft",
484            Self::Crew => "crew",
485            Self::CumulativeUpkeep => "cumulative upkeep",
486            Self::Cycling => "cycling",
487            Self::Dash => "dash",
488            Self::Daybound => "daybound",
489            Self::Deathtouch => "deathtouch",
490            Self::Decayed => "decayed",
491            Self::Defender => "defender",
492            Self::Delve => "delve",
493            Self::Demonstrate => "demonstrate",
494            Self::Desertwalk => "desertwalk",
495            Self::Dethrone => "dethrone",
496            Self::Devoid => "devoid",
497            Self::Devour => "devour",
498            Self::Disguise => "disguise",
499            Self::Disturb => "disturb",
500            Self::DoctorsCompanion => "doctor's companion",
501            Self::DoubleAgenda => "double agenda",
502            Self::DoubleStrike => "double strike",
503            Self::DoubleTeam => "double team",
504            Self::Dredge => "dredge",
505            Self::Echo => "echo",
506            Self::Embalm => "embalm",
507            Self::Emerge => "emerge",
508            Self::Enchant => "enchant",
509            Self::Encore => "encore",
510            Self::Enlist => "enlist",
511            Self::Entwine => "entwine",
512            Self::Epic => "epic",
513            Self::Equip => "equip",
514            Self::Escalate => "escalate",
515            Self::Escape => "escape",
516            Self::Eternalize => "eternalize",
517            Self::Evoke => "evoke",
518            Self::Evolve => "evolve",
519            Self::Exalted => "exalted",
520            Self::Exhaust => "exhaust",
521            Self::Exploit => "exploit",
522            Self::Extort => "extort",
523            Self::Fabricate => "fabricate",
524            Self::Fading => "fading",
525            Self::Fear => "fear",
526            Self::FirstStrike => "first strike",
527            Self::Flanking => "flanking",
528            Self::Flash => "flash",
529            Self::Flashback => "flashback",
530            Self::Flying => "flying",
531            Self::ForMirrodin => "for mirrodin!",
532            Self::Forecast => "forecast",
533            Self::Forestcycling => "forestcycling",
534            Self::Forestwalk => "forestwalk",
535            Self::Foretell => "foretell",
536            Self::Fortify => "fortify",
537            Self::Freerunning => "freerunning",
538            Self::Frenzy => "frenzy",
539            Self::FriendsForever => "friends forever",
540            Self::Fuse => "fuse",
541            Self::Gift => "gift",
542            Self::Graft => "graft",
543            Self::Gravestorm => "gravestorm",
544            Self::Harmonize => "harmonize",
545            Self::Haste => "haste",
546            Self::Haunt => "haunt",
547            Self::Hexproof => "hexproof",
548            Self::HexproofFrom => "hexproof from",
549            Self::HiddenAgenda => "hidden agenda",
550            Self::Hideaway => "hideaway",
551            Self::Horsemanship => "horsemanship",
552            Self::Impending => "impending",
553            Self::Improvise => "improvise",
554            Self::Indestructible => "indestructible",
555            Self::Infect => "infect",
556            Self::Ingest => "ingest",
557            Self::Intensity => "intensity",
558            Self::Intimidate => "intimidate",
559            Self::Islandcycling => "islandcycling",
560            Self::Islandwalk => "islandwalk",
561            Self::JobSelect => "job select",
562            Self::JumpStart => "jump-start",
563            Self::Kicker => "kicker",
564            Self::Landcycling => "landcycling",
565            Self::Landwalk => "landwalk",
566            Self::LegendaryLandwalk => "legendary landwalk",
567            Self::LevelUp => "level up",
568            Self::Lifelink => "lifelink",
569            Self::LivingMetal => "living metal",
570            Self::LivingWeapon => "living weapon",
571            Self::Madness => "madness",
572            Self::MaxSpeed => "max speed",
573            Self::Mayhem => "mayhem",
574            Self::Megamorph => "megamorph",
575            Self::Melee => "melee",
576            Self::Menace => "menace",
577            Self::Mentor => "mentor",
578            Self::Miracle => "miracle",
579            Self::Mobilize => "mobilize",
580            Self::Modular => "modular",
581            Self::MoreThanMeetsTheEye => "more than meets the eye",
582            Self::Morph => "morph",
583            Self::Mountaincycling => "mountaincycling",
584            Self::Mountainwalk => "mountainwalk",
585            Self::Multikicker => "multikicker",
586            Self::Mutate => "mutate",
587            Self::Myriad => "myriad",
588            Self::Nightbound => "nightbound",
589            Self::Ninjutsu => "ninjutsu",
590            Self::NonbasicLandwalk => "nonbasic landwalk",
591            Self::Offering => "offering",
592            Self::Offspring => "offspring",
593            Self::Outlast => "outlast",
594            Self::Overload => "overload",
595            Self::Partner => "partner",
596            Self::PartnerWith => "partner with",
597            Self::Persist => "persist",
598            Self::Phasing => "phasing",
599            Self::Plainscycling => "plainscycling",
600            Self::Plainswalk => "plainswalk",
601            Self::Poisonous => "poisonous",
602            Self::Protection => "protection",
603            Self::Prototype => "prototype",
604            Self::Provoke => "provoke",
605            Self::Prowess => "prowess",
606            Self::Prowl => "prowl",
607            Self::Rampage => "rampage",
608            Self::Ravenous => "ravenous",
609            Self::Reach => "reach",
610            Self::ReadAhead => "read ahead",
611            Self::Rebound => "rebound",
612            Self::Reconfigure => "reconfigure",
613            Self::Recover => "recover",
614            Self::Reinforce => "reinforce",
615            Self::Renown => "renown",
616            Self::Replicate => "replicate",
617            Self::Retrace => "retrace",
618            Self::Riot => "riot",
619            Self::Ripple => "ripple",
620            Self::Saddle => "saddle",
621            Self::Scavenge => "scavenge",
622            Self::Shadow => "shadow",
623            Self::Shroud => "shroud",
624            Self::Skulk => "skulk",
625            Self::Slivercycling => "slivercycling",
626            Self::Soulbond => "soulbond",
627            Self::Soulshift => "soulshift",
628            Self::Specialize => "specialize",
629            Self::Spectacle => "spectacle",
630            Self::Splice => "splice",
631            Self::SplitSecond => "split second",
632            Self::Spree => "spree",
633            Self::Squad => "squad",
634            Self::Station => "station",
635            Self::Storm => "storm",
636            Self::Sunburst => "sunburst",
637            Self::Surge => "surge",
638            Self::Suspend => "suspend",
639            Self::Swampcycling => "swampcycling",
640            Self::Swampwalk => "swampwalk",
641            Self::Toxic => "toxic",
642            Self::Training => "training",
643            Self::Trample => "trample",
644            Self::Transfigure => "transfigure",
645            Self::Transmute => "transmute",
646            Self::Tribute => "tribute",
647            Self::Typecycling => "typecycling",
648            Self::UmbraArmor => "umbra armor",
649            Self::Undaunted => "undaunted",
650            Self::Undying => "undying",
651            Self::Unearth => "unearth",
652            Self::Unleash => "unleash",
653            Self::Vanishing => "vanishing",
654            Self::Vigilance => "vigilance",
655            Self::Ward => "ward",
656            Self::Warp => "warp",
657            Self::WebSlinging => "web-slinging",
658            Self::Wither => "wither",
659            Self::Wizardcycling => "wizardcycling",
660        }
661    }
662}
663
664impl std::fmt::Display for KeywordAbility {
665    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
666        write!(f, "{}", self.as_str())
667    }
668}
669
670impl KeywordAbility {
671    pub fn all() -> impl Iterator<Item = Self> {
672        [
673            Self::Absorb,
674            Self::Affinity,
675            Self::Afflict,
676            Self::Afterlife,
677            Self::Aftermath,
678            Self::Amplify,
679            Self::Annihilator,
680            Self::Ascend,
681            Self::Assist,
682            Self::Augment,
683            Self::AuraSwap,
684            Self::Awaken,
685            Self::Backup,
686            Self::Banding,
687            Self::Bargain,
688            Self::BasicLandcycling,
689            Self::BattleCry,
690            Self::Bestow,
691            Self::Blitz,
692            Self::Bloodthirst,
693            Self::Boast,
694            Self::Bushido,
695            Self::Buyback,
696            Self::Cascade,
697            Self::Casualty,
698            Self::Champion,
699            Self::Changeling,
700            Self::ChooseABackground,
701            Self::Cipher,
702            Self::Cleave,
703            Self::CommanderNinjutsu,
704            Self::Companion,
705            Self::Compleated,
706            Self::Conspire,
707            Self::Convoke,
708            Self::Craft,
709            Self::Crew,
710            Self::CumulativeUpkeep,
711            Self::Cycling,
712            Self::Dash,
713            Self::Daybound,
714            Self::Deathtouch,
715            Self::Decayed,
716            Self::Defender,
717            Self::Delve,
718            Self::Demonstrate,
719            Self::Desertwalk,
720            Self::Dethrone,
721            Self::Devoid,
722            Self::Devour,
723            Self::Disguise,
724            Self::Disturb,
725            Self::DoctorsCompanion,
726            Self::DoubleAgenda,
727            Self::DoubleStrike,
728            Self::DoubleTeam,
729            Self::Dredge,
730            Self::Echo,
731            Self::Embalm,
732            Self::Emerge,
733            Self::Enchant,
734            Self::Encore,
735            Self::Enlist,
736            Self::Entwine,
737            Self::Epic,
738            Self::Equip,
739            Self::Escalate,
740            Self::Escape,
741            Self::Eternalize,
742            Self::Evoke,
743            Self::Evolve,
744            Self::Exalted,
745            Self::Exhaust,
746            Self::Exploit,
747            Self::Extort,
748            Self::Fabricate,
749            Self::Fading,
750            Self::Fear,
751            Self::FirstStrike,
752            Self::Flanking,
753            Self::Flash,
754            Self::Flashback,
755            Self::Flying,
756            Self::ForMirrodin,
757            Self::Forecast,
758            Self::Forestcycling,
759            Self::Forestwalk,
760            Self::Foretell,
761            Self::Fortify,
762            Self::Freerunning,
763            Self::Frenzy,
764            Self::FriendsForever,
765            Self::Fuse,
766            Self::Gift,
767            Self::Graft,
768            Self::Gravestorm,
769            Self::Harmonize,
770            Self::Haste,
771            Self::Haunt,
772            Self::Hexproof,
773            Self::HexproofFrom,
774            Self::HiddenAgenda,
775            Self::Hideaway,
776            Self::Horsemanship,
777            Self::Impending,
778            Self::Improvise,
779            Self::Indestructible,
780            Self::Infect,
781            Self::Ingest,
782            Self::Intensity,
783            Self::Intimidate,
784            Self::Islandcycling,
785            Self::Islandwalk,
786            Self::JobSelect,
787            Self::JumpStart,
788            Self::Kicker,
789            Self::Landcycling,
790            Self::Landwalk,
791            Self::LegendaryLandwalk,
792            Self::LevelUp,
793            Self::Lifelink,
794            Self::LivingMetal,
795            Self::LivingWeapon,
796            Self::Madness,
797            Self::MaxSpeed,
798            Self::Mayhem,
799            Self::Megamorph,
800            Self::Melee,
801            Self::Menace,
802            Self::Mentor,
803            Self::Miracle,
804            Self::Mobilize,
805            Self::Modular,
806            Self::MoreThanMeetsTheEye,
807            Self::Morph,
808            Self::Mountaincycling,
809            Self::Mountainwalk,
810            Self::Multikicker,
811            Self::Mutate,
812            Self::Myriad,
813            Self::Nightbound,
814            Self::Ninjutsu,
815            Self::NonbasicLandwalk,
816            Self::Offering,
817            Self::Offspring,
818            Self::Outlast,
819            Self::Overload,
820            Self::Partner,
821            Self::PartnerWith,
822            Self::Persist,
823            Self::Phasing,
824            Self::Plainscycling,
825            Self::Plainswalk,
826            Self::Poisonous,
827            Self::Protection,
828            Self::Prototype,
829            Self::Provoke,
830            Self::Prowess,
831            Self::Prowl,
832            Self::Rampage,
833            Self::Ravenous,
834            Self::Reach,
835            Self::ReadAhead,
836            Self::Rebound,
837            Self::Reconfigure,
838            Self::Recover,
839            Self::Reinforce,
840            Self::Renown,
841            Self::Replicate,
842            Self::Retrace,
843            Self::Riot,
844            Self::Ripple,
845            Self::Saddle,
846            Self::Scavenge,
847            Self::Shadow,
848            Self::Shroud,
849            Self::Skulk,
850            Self::Slivercycling,
851            Self::Soulbond,
852            Self::Soulshift,
853            Self::Specialize,
854            Self::Spectacle,
855            Self::Splice,
856            Self::SplitSecond,
857            Self::Spree,
858            Self::Squad,
859            Self::Station,
860            Self::Storm,
861            Self::Sunburst,
862            Self::Surge,
863            Self::Suspend,
864            Self::Swampcycling,
865            Self::Swampwalk,
866            Self::Toxic,
867            Self::Training,
868            Self::Trample,
869            Self::Transfigure,
870            Self::Transmute,
871            Self::Tribute,
872            Self::Typecycling,
873            Self::UmbraArmor,
874            Self::Undaunted,
875            Self::Undying,
876            Self::Unearth,
877            Self::Unleash,
878            Self::Vanishing,
879            Self::Vigilance,
880            Self::Ward,
881            Self::Warp,
882            Self::WebSlinging,
883            Self::Wither,
884            Self::Wizardcycling,
885        ].into_iter()
886    }
887}