10 个版本
0.2.6 | 2020 年 2 月 17 日 |
---|---|
0.2.5 | 2019 年 10 月 1 日 |
0.2.4 | 2019 年 3 月 16 日 |
0.2.3 | 2019 年 1 月 20 日 |
0.1.1 | 2018 年 7 月 21 日 |
#1194 在 Rust 模式
114,479 每月下载量
用于 20 个 crate(8 个直接使用)
15KB
179 行
enum-repr
生成与类型别名兼容的枚举 repr 转换。在 no_std
中运行。
EnumRepr
过程宏接受一个 type
参数,并为使用的枚举定义了两个函数
fn repr(&self) -> EnumReprType
fn from_repr(x: EnumReprType) -> Option<Self>
实际的枚举判别式仍然保留为 isize
。
extern crate enum_repr;
extern crate libc;
use libc::*;
use enum_repr::EnumRepr;
#[EnumRepr(type = "c_int")]
#[derive(Debug, PartialEq)]
pub enum IpProto {
IP = IPPROTO_IP,
IPv6 = IPPROTO_IPV6,
// …
}
fn main() {
assert_eq!(IpProto::IP.repr(), IPPROTO_IP);
assert_eq!(IpProto::from_repr(IPPROTO_IPV6), Some(IpProto::IPv6));
assert!(IpProto::from_repr(12345).is_none());
}
许可证
本项目受以下任一许可证的许可:
- Apache 许可证 2.0 版,(LICENSE-APACHE 或 https://apache.ac.cn/licenses/LICENSE-2.0)
- MIT 许可证 (LICENSE-MIT 或 http://opensource.org/licenses/MIT)
由您选择。
依赖项
~1.5MB
~36K SLoC