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}