permission_macro

Crates.iopermission_macro
lib.rspermission_macro
version0.1.1
created_at2025-09-07 17:44:52.445389+00
updated_at2025-09-07 20:49:13.923089+00
descriptionA sub-crate of `permission_check`, which is used to provide more extensive support for build-time checking of permissions.
homepage
repositoryhttps://github.com/i-am-unknown-81514525/permission_check
max_upload_size
id1828374
size50,304
(i-am-unknown-81514525)

documentation

README

permission_macro

A sub-crate of permission_check, which is used to provide more extensive support for build-time checking of permissions.

A simple example

use permission_macro::{perm_parser, perm_expr};

#[test]
fn test_1() {
    let checker = perm_expr!(
        ((org.1047.role.admin.enact | org.1047.role.owner.enact) | (org.1047.user.write && (org.1047.user.read | org.1047.user.read_one)) | (org.1047.user.243.read && org.1047.user.243.write)) &
        !(user.blacklist.enact & !user.blacklist.*)
    );
    let org_id = 1047;
    let user_id = 243;
    assert_eq!(
        checker.with_perm(vec![
            perm_parser!(org.{org_id}.user.{user_id}.read),
            perm_parser!(org.{org_id}.user.{user_id}.write)
        ]),
        true
    );
    let org_id = 1047;
    let user_id = 244;
    assert_eq!(
        checker.with_perm(vec![
            perm_parser!(org.{org_id}.user.{user_id}.read),
            perm_parser!(org.{org_id}.user.{user_id}.write)
        ]),
        false
    );
}

For better example, check the README in permission_check crate

Every crate link

permission_check

permission_parser

permission_macro

Commit count: 41

cargo fmt