6个版本
0.3.4 | 2024年7月3日 |
---|---|
0.3.3 | 2024年6月22日 |
0.3.1 | 2024年5月5日 |
0.2.0 | 2024年2月5日 |
0.1.1 | 2024年1月31日 |
#312 in 编码
28,483 每月下载次数
12KB
238 行
Expunge
一个用于删除/编辑和转换敏感字段的crate。
快速链接
实际应用
use expunge::Expunge;
use serde::{Serialize, Deserialize};
#[derive(Clone, Serialize, Deserialize, Expunge)]
struct User {
#[expunge(skip)] // skipped fields are not transformed
id: i64,
#[expunge(as = "Randy".to_string())]
first_name: String,
#[expunge(as = "Lahey".to_string())]
last_name: String,
#[expunge(with = sha256::digest)]
date_of_birth: String,
latitude: f64,
longitude: f64,
#[expunge(as = "<expunged>".to_string(), zeroize)]
password_hash: String,
}
let user = User{
id: 101,
first_name: "Ricky".to_string(),
last_name: "LaFleur".to_string(),
date_of_birth: "02/02/1960".to_string(),
latitude: 45.0778,
longitude: 63.546,
password_hash: "2f089e52def4cec8b911883fecdd6d8febe9c9f362d15e3e33feb2c12f07ccc1".to_string(),
};
let expunged_user = user.expunge();
let output = serde_json::to_string_pretty(&expunged_user).expect("should serialize");
assert_eq!(r#"{
"id": 101,
"first_name": "Randy",
"last_name": "Lahey",
"date_of_birth": "eeb98c815ae11240b563892c52c8735472bb8259e9a6477e179a9ea26e7a695a",
"latitude": 0.0,
"longitude": 0.0,
"password_hash": "<expunged>"
}"#,
output,
)
贡献
- 确保所有测试通过
cargo test --all-features
- 提交PR/issue
依赖
~0.2–0.8MB
~19K SLoC