typed-arrow provides a strongly typed, fully compile-time way to declare Arrow schemas in Rust. It maps Rust types directly to arrow-rs typed builders/arrays and arrow_schema::DataType — without any runtime DataType switching — enabling zero runtime cost, monomorphized column construction and ergonomic ORM-like APIs.
Why compile-time Arrow?
Performance: monomorphized builders/arrays with zero dynamic dispatch; avoids runtime DataType matching.
matching. Safety: column types, names, and nullability live in the type system; mismatches fail at compile time.
Interop: uses arrow-array / arrow-schema types directly; no bespoke runtime layer to learn.
Quick Start
use typed_arrow :: { prelude :: * , schema :: SchemaMeta } ; use typed_arrow :: { Dictionary , TimestampTz , Millisecond , Utc , List } ; # [ derive ( typed_arrow :: Record ) ] struct Address { city : String , zip : Option < i32 > } # [ derive ( typed_arrow :: Record ) ] struct Person { id : i64 , # [ record ( nested ) ] address : Option < Address > , tags : Option < List < Option < i32 > > > , // List column with nullable items code : Option < Dictionary < i32 , String > > , // Dictionary
Add to your Cargo.toml (derives enabled by default):
[ dependencies ] typed-arrow = { version = " 0.x " }
When working in this repository/workspace:
... continue reading