mirror of
https://github.com/bitcoinresearchkit/brk.git
synced 2026-04-25 07:09:59 -07:00
brk_traversable_derive
Proc-macro for deriving the Traversable trait on data structures.
What It Enables
Automatically generate tree traversal and export iteration for structs, eliminating boilerplate when working with hierarchical data that needs serialization or inspection.
Key Features
- Automatic tree building: Converts struct fields into
TreeNode::Branchhierarchies - Export iteration: Generates
iter_any_exportable()to walk all exportable vectors - Field attributes:
#[traversable(skip)]to exclude fields,#[traversable(flatten)]to merge nested structures - Option support: Gracefully handles
Option<T>fields - Generic-aware: Properly bounds generic parameters with
Traversable + Send + Sync
Core API
#[derive(Traversable)]
struct MyData {
pub metrics: MetricsCollection,
#[traversable(flatten)]
pub nested: NestedData,
#[traversable(skip)]
internal: Cache,
}
Generated Methods
to_tree_node(&self) -> TreeNode- Build navigable tree structureiter_any_exportable(&self) -> impl Iterator<Item = &dyn AnyExportableVec>- Iterate all exportable vectors