44 个版本
新版本 0.17.9 | 2024 年 8 月 23 日 |
---|---|
0.17.2 | 2024 年 7 月 29 日 |
0.16.1 | 2024 年 2 月 1 日 |
0.14.2 | 2023 年 12 月 5 日 |
0.4.0 | 2019 年 7 月 26 日 |
69 在 游戏开发 类别中
936 每月下载量
用于 daily_scry
235KB
4K SLoC
scryfall-rs
Scryfall 魔法游戏 API 的封装
尽可能紧密地封装 Scryfall API,并尝试保持其最新状态
卡片
从该 API 获取卡片的主要方式是使用 Card
结构体。
这允许您使用 Scryfall 所有的 RESTful API 获取卡片
use scryfall::card::Card;
match Card::named_fuzzy("Light Bolt") {
Ok(card) => assert_eq!(card.name, "Lightning Bolt"),
Err(e) => panic!(format!("{:?}", e))
}
集合
您还可以获取卡片集的信息。
可用于此的可用路由可以在 Set
中查看
use scryfall::set::Set;
assert_eq!(Set::code("mmq").unwrap().name, "Mercadian Masques")
处理破坏性更改
Scryfall 做了很多破坏性 API 更改,主要是因为魔法游戏有很多破坏性更改 😅。由于此包的强类型,这意味着有时某一天工作正常的代码第二天可能会失败。例如,有一个 PromoType
枚举。在反序列化时,该枚举将严格拒绝它不认识的任何格式。这意味着每次巫师添加新格式时,Scryfall 都将从其 API 返回该新格式,这将使您的代码在运行时失败。
为了应对这种情况,我添加了一个名为 unknown_variants
的功能。此功能为这些麻烦的枚举添加了一个名为 Unknown
的变体,该变体包含未知格式的字符串表示。
这有几个优点和缺点
- 优点
- 您的代码不太可能在一天之内停止工作。
- 您可以对枚举进行穷举匹配
- 缺点
- 枚举的大小现在是 24 字节,而不是 1
- 它不再是 Copy
- 如果您曾经依赖通过未知变体传递的变体,当新变体被添加到枚举中时,它将不再在未知变体中显示。例如,如果明天巫师添加了一个名为“透明”的促销类型,并且您启用了
unknown_variants
,则"transparent"
将开始出现在PromoType::Unknown
变体中。但在下一个版本的此 crate 中,我将添加PromoType::Transparent
,这意味着如果您升级对该 crate 的依赖,则"transparent"
将不再出现在PromoType::Unknown
变体中。如果您依赖这种行为,它将被视为重大更改。
如果您想要拥有未知变体但又不想支付24字节的成本,您可以选择 unknown_variants_slim
功能,该功能将简单地添加一个空的 Unknown
变体。
这两个功能不兼容,如果两者都存在,则 unknown_variants
将优先。
依赖项
~5–17MB
~243K SLoC