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}