Skip to main content

Crate verit_derive

Crate verit_derive 

Source
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.
  • Stringstring; Vec<u8>bytes.
  • Vec<T> (T ≠ u8) → list<T> (recursively).
  • Option<T> → an optional field (absent reads back as None; only valid on sparse/packed structs, never dense).
  • any other path type T → a nested struct (T must also #[derive(Verit)]).

The generated code references the verit crate as ::verit, so a downstream crate needs verit = { version = "…", features = ["derive"] }.

Derive Macros§

Verit
Derive VeritType for a named-field struct.