#枚举 #判别式 #转换 #derive #安全 #转换

无 std try-from-discrim

#[derive(TryFrom / From)] 使用枚举判别式,具有后备支持

1 个稳定版本

1.0.0 2022 年 9 月 29 日

#16#判别式


3 个包中使用(通过 gb-cpu-sim

MPL-2.0 许可证

22KB
263 行代码(不包括注释)

derive(TryFrom, From)

此库提供了用于标准库的 std::convert::TryFromstd::convert::From 特性的方便的 derive 宏。

示例

[dependencies]
try-from-discrim = "1.0"

然后

#[macro_use] extern crate try_from_discrim;

#[derive(TryFrom)]
#[from(u8)]
enum RegisterIndex {
	B = 0,
	C = 1,
	D = 2,
	E = 3,
	H = 4,
	L = 5,
	HlInd = 6,
	A = 7,
}

(在 Rust 2018 或更高版本中,无需 extern crate 行。)

判别式也可以省略!请参阅文档了解更多信息。

详细信息

  • 此包故意不进入您的公共 API。提供的实现与手动编写的实现相同,因此从手动编写的 impl 切换到此包或反之亦然不是破坏性更改。
  • 使用标准库转换特性可以与更多代码一起工作,而不是实现自定义特性。
  • 非穷举枚举仍然可以使用后备变体实现 From

生成的实现与 #[no_std] 环境兼容。

许可证

此包受 Mozilla 公共许可证 2.0 的许可,请参阅 LICENSE 文件。

依赖项

~1.5MB
~35K SLoC