3 unstable releases
| 0.2.0 | Mar 3, 2026 |
|---|---|
| 0.1.1 | Jan 20, 2026 |
| 0.1.0 | Jan 20, 2026 |
#1146 in Data structures
1MB
17K
SLoC
BO4E - Business Objects for Energy
Rust implementation of the BO4E standard for data exchange in the German energy industry.
Quick Start
use bo4e::prelude::*;
// Create a meter
let meter = Meter {
meter_number: Some("1EMH0012345678".to_string()),
division: Some(Division::Electricity),
meter_type: Some(MeterType::ModernMeasuringDevice),
..Default::default()
};
// Serialize to German JSON (BO4E standard)
let json = to_json_german(&meter).unwrap();
println!("{}", json);
// Deserialize
let mut bytes = json.into_bytes();
let parsed: Meter = from_json(&mut bytes).unwrap();
assert_eq!(parsed.meter_number, Some("1EMH0012345678".to_string()));
Crate Structure
- [
bo] - Business Objects (Meter, MarketLocation, Contract, etc.) - [
com] - Components (Address, Price, MeterReading, etc.) enums- Enumerations (Division, MeterType, ContractStatus, etc.)
Serialization
BO4E uses German field names in JSON by default to maintain compatibility
with the standard. Use to_json_english for English field names.
use bo4e::prelude::*;
let meter = Meter::default();
// German (standard)
let german = to_json_german(&meter).unwrap();
// English
let english = to_json_english(&meter).unwrap();
Performance
This crate uses simd-json for
SIMD-accelerated JSON parsing. For best performance, use from_json
with a mutable byte slice.
Related Projects
- BO4E-Python - Python implementation
- BO4E-Schemas - JSON schemas
- bo4e.de - Official website
Dependencies
~4.5–6MB
~106K SLoC