Crate fieldmasker

Crate fieldmasker 

Source
Expand description

Field-level response masking for Serde-serializable data.

This crate lets you serialize a value while selecting only a subset of its fields, using a “field mask” syntax ("a,b.c,d.*.e"). It is transport-agnostic and works with any Serde serializer (e.g., JSON, YAML).

§Quick start

use fieldmasker::{FieldMask, Masked, MaskSpec};
use serde::Serialize;

#[derive(Serialize, MaskSpec)]
struct User {
    id: u64,
    name: String,
    email: String,
}


let u = User { id: 1, name: "Ada".into(), email: "a@ex.com".into() };
let mask = FieldMask::parse("id,name").unwrap();
let masked = Masked::new(u, mask);
let json = serde_json::to_string(&masked).unwrap();
assert!(json.contains("id"));
assert!(json.contains("name"));
assert!(!json.contains("email"));

§Features

  • derive (default): exposes fieldmasker_derive::MaskSpec derive macro.
  • axum: adds integration helpers for Axum.
  • hashbrown: enables MaskSpec for hashbrown::HashMap<String, V>.

Re-exports§

pub use spec::MaskSpec;

Modules§

axum_integration
Optional Axum integration helpers.
spec
Schema description and the MaskSpec trait.

Structs§

FieldMask
A parsed, validated field mask.
Masked
A wrapper that applies a FieldMask when serializing a value.

Enums§

FieldMaskError
Errors produced while parsing or validating field masks.

Derive Macros§

MaskSpec
Derive fieldmasker::MaskSpec for a type.