#role #permissions #bit #enums #bit-flags #macro

bit_roles_macros

基于位标志的细粒度角色管理

4个版本

0.2.2 2024年6月8日
0.2.1 2024年6月8日
0.2.0 2024年4月13日
0.1.0 2024年4月13日

#1291 in 过程宏

Download history 207/week @ 2024-04-08 42/week @ 2024-04-15 3/week @ 2024-05-20 216/week @ 2024-06-03 50/week @ 2024-06-10

199 每月下载量
用于 bit_roles

MIT 协议

13KB
120

Bit Roles

Latest Version Rust Documentation

此crate允许您根据位标志实现细粒度角色和权限管理。

使用离散字段 使用位角色
#[derive(Debug)]
struct User {
    can_send_message: bool,
    can_edit_message: bool
}

fn main() {
    let user = User {
        can_send_message: true,
        can_edit_message: false
    };
}
use bit_roles::BitRole;

#[derive(Debug)]
struct User {
    permissions: usize
}

#[derive(Debug, BitRole, Copy, Clone)]
enum Permission {
    None = 0,
    SendMessage = 1,
    EditMessage = 2,
}

fn main() {
    let mut permissions = Permission::empty();
    permissions.add_one(Permission::SendMessage);

    let user = User {
        permissions: permissions.get_value()
    };
}

入门指南

bit_roles 添加到您的项目中

cargo add bit_roles

用法

您可以为您的角色枚举派生 BitRole 特性。这确保了枚举区分符的编译时验证。确保您为每个枚举变体指定一个区分符;它必须是零或2的幂。还要记住,为您的枚举派生 CopyClone 特性。

如果您需要一个没有编译时检查的管理器,它也作为 BitRoleUnchecked 特性导出。如果您想使用原始整数值作为角色或具有复杂的角色枚举定义,这很有用。您将需要为您的角色枚举实现 Into<usize> 特性,并为其派生 CopyClone 特性。

依赖项

~260–700KB
~17K SLoC