dbc-rs
A Rust library for parsing, editing, and manipulating DBC (CAN Database) files.
Features
- Zero dependencies - Pure Rust, no external runtime dependencies
- no_std compatible - Works on embedded targets (Cortex-M, RISC-V)
- Flexible memory - Heap (
alloc) or stack (heapless) allocation - Memory safe -
forbid(unsafe_code)enforced - Full read/write - Parse, modify, and serialize DBC files
Quick Start
[]
= "0.1"
Decode CAN Frames
use Dbc;
// Parse DBC content
let dbc = parse?;
// Decode a CAN frame (ID 0x100, 8 bytes, standard 11-bit ID)
let signals = dbc.decode?;
for signal in signals
Encode Signal Values
use Dbc;
let dbc = parse?;
// Encode signal values into a CAN frame payload
let payload = dbc.encode?;
Embedded (no_std)
[]
= { = "0.1", = false, = ["heapless"] }
See examples/ for complete working examples:
decode.rs- Signal decoding basicsdecode_frame.rs- Usingembedded-canFrame traitencode.rs- Encoding signals to CAN payloadscreate_dbc.rs- Building DBC files programmaticallyparse_std.rs/parse_no_std.rs- Parsing in different environments
Feature Flags
| Feature | Description | Default |
|---|---|---|
std |
Standard library with builders | Yes |
alloc |
Heap allocation | Via std |
heapless |
Stack-only for no_std |
No |
embedded-can |
embedded-can crate integration |
No |
Documentation
- API Reference
- ARCHITECTURE.md - Internal design
- SPECIFICATIONS.md - DBC format reference
- SECURITY.md - Security audit
License
MIT OR Apache-2.0. See LICENSING.md.