redactrs/redactors.rs
1//! Contains ready to use [Redactor]s
2use crate::Redactor;
3use std::fmt::Formatter;
4
5/// [Redactor] that will redact the value to "\<redacted\>"
6/// ```rust
7/// # use redactrs::Redacted;
8/// # use redactrs::redactors::Simple;
9/// let redacted_value: Redacted<_, Simple> = "secret".into();
10///
11/// assert_eq!(redacted_value.to_string(), "<redacted>")
12/// ```
13pub struct Simple;
14impl Redactor for Simple {
15 fn redact(f: &mut Formatter) -> std::fmt::Result {
16 write!(f, "<redacted>")
17 }
18}
19
20/// Configurable [Redactor] that lets you specify the symbol and repetition."
21/// ```rust
22/// # use redactrs::Redacted;
23/// # use redactrs::redactors::Custom;
24/// let redacted_value: Redacted<_, Custom<'๐คจ', 3>> = "secret".into();
25///
26/// assert_eq!(redacted_value.to_string(), "๐คจ๐คจ๐คจ");
27/// ```
28///
29/// The default values will result in a password style redaction: "โโโโโโโโ"
30/// ```rust
31/// # use redactrs::Redacted;
32/// # use redactrs::redactors::Custom;
33/// let redacted_value: Redacted<_, Custom> = "secret".into();
34///
35/// assert_eq!(redacted_value.to_string(),"โโโโโโโโ");
36/// ```
37pub struct Custom<const SYMBOL: char = 'โ', const REP: usize = 8>;
38impl<const SYMBOL: char, const REP: usize> Redactor for Custom<SYMBOL, REP> {
39 fn redact(f: &mut Formatter) -> std::fmt::Result {
40 write!(
41 f,
42 "{}",
43 std::iter::repeat(SYMBOL).take(REP).collect::<String>()
44 )
45 }
46}