1个不稳定版本
0.1.0 | 2024年6月20日 |
---|
#725 in 过程宏
7KB
66 行
bitwise_boolean
一个Rust宏,用于为struct生成位运算布尔值获取器和设置器。
用法
要使用 bitwise_boolean
宏,请将以下内容添加到你的 Cargo.toml
文件中
[dependencies]
bitwise_boolean = "0.1.0"
然后,在你的代码中使用宏
use bitwise_boolean::BitwiseBoolean;
#[derive(Default, BitwiseBoolean)]
struct ExampleSettingsData {
// up to 8 flags total
#[bitwise_bool(
admin,
agreed_to_terms,
banned,
random_other_flag
)]
pub booleans: u8,
}
struct ExampleSettings {
data: ExampleSettingsData,
}
impl ExampleSettings {
fn new() -> Self {
Self {
data: ExampleSettingsData::default(),
}
}
}
现在,你可以在你的代码中使用位运算布尔值获取器和设置器
let mut settings = ExampleSettings::new();
settings.data.set_admin(true);
assert!(settings.data.admin());
assert!(!settings.data.agreed_to_terms());
assert!(!settings.data.banned());
assert!(!settings.data.random_other_flag());
settings.data.set_agreed_to_terms(true);
assert!(settings.data.admin());
assert!(settings.data.agreed_to_terms());
assert!(!settings.data.banned());
assert!(!settings.data.random_other_flag());
settings.data.set_banned(true);
assert!(settings.data.admin());
assert!(settings.data.agreed_to_terms());
assert!(settings.data.banned());
assert!(!settings.data.random_other_flag());
settings.data.set_random_other_flag(true);
assert!(settings.data.admin());
assert!(settings.data.agreed_to_terms());
assert!(settings.data.banned());
assert!(settings.data.random_other_flag());
限制
bitwise_boolean
宏目前支持每个struct最多8个标志。
许可证
本项目遵循MIT许可证。
依赖关系
~1.5MB
~35K SLoC