mirror of
https://github.com/bitcoinresearchkit/brk.git
synced 2026-04-24 22:59:58 -07:00
34 lines
1.1 KiB
Markdown
34 lines
1.1 KiB
Markdown
# 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::Branch` hierarchies
|
|
- **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
|
|
|
|
```rust,ignore
|
|
#[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 structure
|
|
- `iter_any_exportable(&self) -> impl Iterator<Item = &dyn AnyExportableVec>` - Iterate all exportable vectors
|