5个版本
使用旧的Rust 2015
0.1.4 | 2020年1月8日 |
---|---|
0.1.3 | 2018年11月24日 |
0.1.2 | 2018年11月24日 |
0.1.1 | 2018年11月24日 |
0.1.0 | 2018年11月24日 |
#212 在 无标准库
每月 下载 35 次
9KB
74 行
flags-macro
该crate提供了一个方便的宏 flags
用于构造位标志。它旨在与 bitflags
和 enumflags
兼容,但可与任何类似位标志的类型一起使用。
示例
bitflags
:
#[macro_use]
extern crate bitflags;
bitflags! {
struct Test: u32 {
const A = 0b0001;
const B = 0b0010;
}
}
let flags0 = flags![Test::{}];
let flags1 = flags![Test::{A}];
let flags2 = flags![Test::{A | B}];
assert_eq!(flags0, Test::empty());
assert_eq!(flags1, Test::A);
assert_eq!(flags2, Test::A | Test::B);
enumflags
:
#[macro_use]
extern crate enumflags;
#[derive(EnumFlags, Copy, Clone, PartialEq, Eq, Debug)]
#[repr(u8)]
pub enum Test { A = 0b0001, B = 0b0010 }
let flags0 = flags![Test::{}];
let flags1 = flags![Test::{A}];
let flags2 = flags![Test::{A | B}];
assert_eq!(flags0, enumflags::BitFlags::empty());
assert_eq!(flags1, Test::A);
assert_eq!(flags2, Test::A | Test::B);
许可证:CC0-1.0