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): exposesfieldmasker_derive::MaskSpecderive macro.axum: adds integration helpers for Axum.hashbrown: enablesMaskSpecforhashbrown::HashMap<String, V>.
Re-exports§
pub use spec::MaskSpec;
Modules§
- axum_
integration - Optional Axum integration helpers.
- spec
- Schema description and the
MaskSpectrait.
Structs§
- Field
Mask - A parsed, validated field mask.
- Masked
- A wrapper that applies a
FieldMaskwhen serializing a value.
Enums§
- Field
Mask Error - Errors produced while parsing or validating field masks.
Derive Macros§
- Mask
Spec - Derive
fieldmasker::MaskSpecfor a type.