Skip to content

jeremyschiemann/redactrs

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

44 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Redactrs   Latest Version Total Downloads MSRV License Build Status Documentation

What is it?

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.

Usage

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

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}"#);

About

Wrapper to avoid accidentally leaking sensitive data during printing/logging

Resources

License

Stars

Watchers

Forks

Packages

No packages published