Expand description
#[derive(Verit)] — generate a Veritate schema, encoder, and decoder from a
plain Rust struct. The Rust peer of Python’s @verit decorator.
ⓘ
use verit::{Verit, VeritType, SchemaMode};
#[derive(Verit)]
#[verit(mode = "dense")]
struct Point { #[verit(id = 1)] x: f64, #[verit(id = 2)] y: f64 }
#[derive(Verit)]
struct Order {
#[verit(id = 1)] id: u64,
#[verit(id = 2)] item: String,
#[verit(id = 3)] tags: Vec<String>,
#[verit(id = 4)] origin: Point, // nested #[derive(Verit)]
#[verit(id = 5)] note: Option<String>, // optional (absent = None)
}
let bytes = order.to_verit(SchemaMode::Inline)?;
let back = Order::from_verit(&bytes)?;§Field type mapping
bool,u8..u64,i8..i64,f32,f64→ the matching scalar.String→string;Vec<u8>→bytes.Vec<T>(T ≠ u8) →list<T>(recursively).Option<T>→ an optional field (absent reads back asNone; only valid onsparse/packedstructs, neverdense).- any other path type
T→ a nestedstruct(T must also#[derive(Verit)]).
The generated code references the verit crate as ::verit, so a downstream
crate needs verit = { version = "…", features = ["derive"] }.