1个不稳定版本

使用旧的Rust 2015

0.1.0 2018年11月24日

#194 in #fields


e_num 中使用

MIT 许可证

8KB
220

e_num

将枚举序列化为数字。

警告

此库通过位操作将包含值的数字表示方式左移,以便将标记适当地放在数字的右侧,与具有变体字段(例如 Variant1(u64))的字段一起工作。如果字段中的数字非常大或变体非常多,则值左侧的数据可能会丢失。

用法

#[macro_use]
extern crate e_num;

use e_num::ENum;

#[derive(ENum)]
enum A {
  B,
  C(u64),
}

fn main() {
  let b: usize = A::B.to_num();
  println!("b as a number: {:#b}", b);
  let b = A::from_num(b);
  assert!(match b {
    A::B => true,
    _ => false,
  });
  let c = A::C(85).to_num();
  println!("c as a number: {:#b}", c);
  let c = A::from_num(c);
  assert!(match c {
    A::C(inner) => {
      assert_eq!(inner, 85);
      true
    }
    _ => false,
  });
}

许可证

本项目采用MIT许可证。有关详细信息,请参阅LICENSE文件。

依赖项

~2.5MB
~54K SLoC