#macro-derive #sensitive #password #derive #macro #redact

过程宏 derive-masked

添加 #[derive(x)] 宏以实现遮罩敏感字段的 Debug 和 Display 特性

3 个不稳定版本

0.1.0 2024年6月22日
0.0.0-alpha.12024年6月22日

#329 in 过程宏

Download history 286/week @ 2024-06-17 44/week @ 2024-06-24 12/week @ 2024-07-01 59/week @ 2024-07-29

每月59次下载

MIT/Apache

9KB
99

derive-masked

derive-masked 是一个过程宏crate,用于生成遮罩敏感字段的 DisplayDebug 实现代码,确保结构化数据的输出既安全又受控。

特性

  • 为遮罩的 Display 特性实现生成 DisplayMasked
  • 为遮罩的 Debug 特性实现生成 DebugMasked
  • 使用 #[masked] 属性遮罩敏感字段。

如果您想的话,可以同时生成 DisplayMaskedDebugMasked

使用方法

添加到 Cargo.toml

cargo add derive-masked

示例

use derive_masked::{DebugMasked, DisplayMasked};

#[derive(DebugMasked, DisplayMasked)]
struct User {
    name: String,
    #[masked]
    password: String,
}

fn main() {
    let user = User {
        name: "Alice".to_string(),
        password: "super_secret".to_string(),
    };

    // Uses DisplayMasked. Output: User { name: Alice, password: ***** }
    println!("{}", user);

    // Uses DebugMasked. Output: User { name: "Alice", password: ***** }
    println!("{:?}", user);

    // Uses DebugMasked with pretty print formatter. Output:
    // User {
    //     name: "Alice",
    //     password: *****
    // }
    println!("{:#?}", user);
}

更多示例,请参阅 示例目录

获取帮助

如需支持,请在 GitHub 上提交问题。

许可

根据您的选择,许可协议为 MIT 或 Apache 2.0。

依赖

~245–680KB
~16K SLoC