#位运算 #布尔值 #获取器-设置器 #设置器 #获取器 #

bitwise_boolean

一个Rust宏,用于为具有u8字段的struct生成位运算布尔值获取器和设置器,最多可存储8个标志

1个不稳定版本

0.1.0 2024年6月20日

#725 in 过程宏

MIT 许可证

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