PII masking for logs and pipelines in Rust.

Mask email addresses and global phone numbers safely, quickly, and with minimal dependencies. Designed for logging and data processing workflows.

alternate_email

Email Masking

Preserves the domain and the first local character: alice@example.com -> a****@example.com.

public

Global Phone Formats

Keeps formatting and the last 4 digits: +1 (800) 123-4567 -> +1 (***) ***-4567.

construction

Custom & Lightweight

Change the mask character and keep dependencies minimal (regex only).

Installation & Basic Usage

Use cargo add mask-pii (or add mask-pii = "0.1.0" to Cargo.toml) and enable masking with the builder pattern.

Installation

cargo add mask-pii

Usage

main.rs
use mask_pii::Masker;

fn main() {
  // Configure the masker
  let masker = Masker::new()
    .mask_emails()
    .mask_phones()
    .with_mask_char('#');

  let input = "Contact: alice@example.com or 090-1234-5678.";
  let output = masker.process(input);

  println!("{}", output);
  // Output: "Contact: a####@example.com or 090-####-5678."
}
info
Important Note

By default, Masker::new() performs no masking. Enable email/phone filters explicitly before processing text.