Porting a Segmented List From C to Rust

Macros, Token pasting and Custom allocators vs Traits, Option<Box<[MaybeUninit<T>]>> and the borrow checker