Recipes
Runnable, tested code for every pattern lives in sbe-feature-tour. See its src/lib.rs for the full API map.
- Aeron try_claim
- Display / Debug
- Schema Descriptions → Rustdoc
- Domain DTOs
- App Types on Composites
- Timestamp Conversions
Quick reference
Known vs unknown group count:
#![allow(unused)] fn main() { pub fn encode_sample_car(buf: &mut [u8]) -> Result<usize, sbe_rt::EncodeError> { let mut extras = OptionalExtras::default(); extras.cruise_control(true).sports_pack(true); // Buffer pre-sized from EncodedLength; try_* still validates extent. let len = CarEncoder::try_wrap_and_apply_header(buf, 0) .unwrap() .fixed(&CarFixedFields { serial_number: 1234, model_year: 2013, available: true.into(), code: Model::A, some_numbers: [10, 20, 30, 40], vehicle_code: [b'A', b'B', b'C', b'D', b'E', b'F'], extras, engine: Engine::new( 2000, 4, [b'1', b'2', b'3'], 0i8, false.into(), Booster::new(BoostType::TURBO, 210), ), }) .fuel_figures(2, |g| { g.add(|mut e| { e.speed(30).mpg(35.9); e.usage_description(b"Urban") })?; g.add(|mut e| { e.speed(60).mpg(25.0); e.usage_description(b"Highway") })?; Ok(()) })? .performance_figures(1, |g| { g.add(|mut e| { e.octane_rating(95); e.acceleration(2, |a| { a.add(|x| { x.mph(30).seconds(4.0); Ok(()) })?; a.add(|x| { x.mph(60).seconds(7.5); Ok(()) }) }) })?; Ok(()) })? .manufacturer(b"Honda")? .model(b"Civic VTi")? .activation_code(b"abcdef")? .encoded_length_with_header(); Ok(len) } }
(From sbe-feature-tour — known-count groups with chaining, tested in CI.)
Unknown size: count back-patched after the closure (streaming producers).
let unknown_len = CarEncoder::wrap_and_apply_header(&mut buf, 0)
.fixed(&fields)
.fuel_figures_unknown_size(|g| {
for row in rows {
g.add(|e| {
e.speed(row.speed).mpg(row.mpg);
Ok(())
})?;
}
Ok(())
})?
.performance_figures(0, |_| Ok(()))?
.manufacturer(b"Honda")?
.model(b"Civic")?
.activation_code(b"active")?
.encoded_length_with_header();
println!("known={known_len} unknown={unknown_len}");