Recipes
Runnable code: sbe-feature-tour src/lib.rs.
- 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_as_str("Urban")
})?;
g.add(|mut e| {
e.speed(60).mpg(25.0);
e.usage_description_as_str("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_as_str("Honda")?
.model_as_str("Civic VTi")?
.activation_code_as_str("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(|mut e| {
e.speed(row.speed).mpg(row.mpg);
e.usage_description_as_str(&row.usage)
})?;
}
Ok(())
})?
.performance_figures(0, |_| Ok(()))?
.manufacturer_as_str("Honda")?
.model_as_str("Civic")?
.activation_code_as_str("active")?
.encoded_length_with_header();
println!("known={known_len} unknown={unknown_len}");