3 个版本 (重大更新)
0.3.0 | 2023年4月8日 |
---|---|
0.2.0 | 2022年5月30日 |
0.1.0 | 2022年2月23日 |
#2338 在 Rust 模式
每月下载量 116 次
用于 xcodeproj
10KB
50 代码行
Enum Variant Macros
用于生成未命名单成员枚举的 From & TryFrom 实现的宏库。换句话说,以下格式的。
pub enum Variants {
Integer(i32),
Float(f32),
Bool(bool),
Byte(u8),
}
该库包含 2 个宏,TryFromVariants & FromVariants。
TryFromVariants 为每个变体类型实现 TryFrom,允许代码如下所示:
use enum_variant_macros::*;
use std::error::Error;
use strum_macros::IntoStaticStr;
#[derive(IntoStaticStr, TryFromVariants)]
enum Variants {
Integer(i32),
Float(f32),
}
fn main() -> Result<(), Box<dyn Error>> {
let variant = Variants::Float(12.0);
let float: f32 = TryFrom::try_from(variant)?;
Ok(())
}
注意:此类型的派生还需要实现 impl From<Variant> for &'static str
。
FromVariants 相对简单,它只为每个包装类型生成 From。
use enum_variant_macros::*;
#[derive(Debug, PartialEq, FromVariants)]
enum Variants {
Integer(i32),
Float(f32),
}
let variant = Variants::from(12);
assert_eq!(Variants::Integer(12), variant);
注意
如果这个库不符合您的喜好,我推荐 enum dispatch,这是一个功能更全面的库,也为枚举提供了 from & try_into。
许可证
根据您的选择,许可协议为 Apache License, Version 2.0 或 MIT 许可证。Apache 许可证,版本 2.0 或 MIT 许可证。
依赖关系
~300–760KB
~18K SLoC