34 releases

Uses new Rust 2024

new 0.3.0-beta.2 Apr 15, 2026
0.3.0-beta.1 Apr 8, 2026
0.2.5 Mar 29, 2026
0.1.9 Feb 13, 2026
0.1.0-alpha.1 Dec 21, 2025

#2108 in Rust patterns

38 downloads per month
Used in 11 crates (7 directly)

MIT license

575KB
18K SLoC

brk_traversable

Trait for navigating and exporting hierarchical data structures.

What It Enables

Traverse nested data collections (datasets, grouped metrics) as trees for inspection, and iterate all exportable vectors for bulk data export.

Key Features

  • Tree navigation: Convert nested structs into TreeNode hierarchies for exploration
  • Export iteration: Walk all AnyExportableVec instances in a data structure
  • Derive macro: #[derive(Traversable)] with derive feature
  • Compression backends: Support for PCO, LZ4, ZeroCopy, Zstd via feature flags
  • Blanket implementations: Works with Box<T>, Option<T>, BTreeMap<K, V>

Core API

pub trait Traversable {
    fn to_tree_node(&self) -> TreeNode;
    fn iter_any_exportable(&self) -> impl Iterator<Item = &dyn AnyExportableVec>;
}

Supported Vec Types

All vecdb vector types implement Traversable:

  • BytesVec, EagerVec, PcoVec (with pco feature)
  • ZeroCopyVec (with zerocopy feature)
  • LZ4Vec, ZstdVec (with respective features)
  • LazyVecFrom1/2/3 for derived vectors

Feature Flags

  • derive - Enable #[derive(Traversable)] macro
  • pco - PCO compression support
  • zerocopy - Zero-copy vector support
  • lz4 - LZ4 compression support
  • zstd - Zstd compression support

Built On

  • brk_types for TreeNode type
  • brk_traversable_derive for the derive macro (optional)

Dependencies

~19MB
~310K SLoC