| Crates.io | redactrs |
| lib.rs | redactrs |
| version | 0.1.4 |
| created_at | 2024-12-26 20:27:18.257829+00 |
| updated_at | 2024-12-30 16:55:14.223302+00 |
| description | Wrapper to avoid accidentally leaking sensitive data during printing/logging |
| homepage | |
| repository | https://github.com/jeremyschiemann/redactrs.git |
| max_upload_size | |
| id | 1495949 |
| size | 20,704 |
Redactrs is a wrapper for sensitive data that you want to avoid being leaked by accidentally printing/logging/etc. them.
How the data is redacted is defined by the Redactor. A Redactor is a struct that implements the Redactor-trait.
First add this crate to your project:
cargo add redactrs
In its most basic form, Redacted is used like this:
use redact::Redacted;
let x: Redacted<&str> = "sensitive".into();
assert_eq!(x.to_string(), "<redacted>");
This will by default use the Simple-Redactor. If desired, it can be swapped with the Custom-Redactor.
use redact::Redacted;
use redact::redactors::Custom;
let x: Redacted<&str, Custom<'X', 5>> = "sensitive".into();
assert_eq!(x.to_string(), "XXXXX");
To get back the wrapped type, you can either use .into_inner() which consumes the Redacted and returns the wrapped type
or use .inner()/.inner_mut() for a (mutable) reference of the wrapped type.
Serde support can be activated by activating the serde feature!
cargo add redactrs -F serde
By default, Redacted types will serialize into their redacted representation. If you don’t want this, and rather serialize normally you can annotate the redacted field with this attribute: #[serde(serialize_with = "no_redact")]
use redactrs::Redacted;
use serde::Serialize;
use redactrs::serde::no_redact;
#[derive(Serialize)]
struct MyData {
#[serde(serialize_with = "no_redact" )]
a: Redacted<i32>,
}
let data = MyData {
a: 42.into(),
};
let json = serde_json::to_string(&data).expect("Test case");
assert_eq!(json, r#"{"a":42}"#);