#automotive #can

no-std dbc-rs

Database CAN (DBC) parsing and editing library

18 unstable releases (3 breaking)

Uses new Rust 2024

0.4.1 Dec 29, 2025
0.4.0 Dec 29, 2025
0.3.0 Dec 29, 2025
0.2.2 Dec 27, 2025
0.1.0-alpha Nov 25, 2025

#405 in Parser implementations


Used in 2 crates

MIT/Apache

750KB
15K SLoC

dbc-rs

A lightweight Rust library for seamlessly parsing and editing DBC (CAN Database) files, with robust support for encoding and decoding messages and signals.

Crates.io Documentation License

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

[dependencies]
dbc-rs = "0.4"

Decode CAN Frames

use dbc_rs::Dbc;

// Parse DBC content
let dbc = Dbc::parse(dbc_content)?;

// Decode a CAN frame (ID 0x100, 8 bytes, standard 11-bit ID)
let signals = dbc.decode(0x100, &frame_data, false)?;
for signal in signals {
    println!("{}: {:.2} {}", signal.name, signal.value, signal.unit);
}

Encode Signal Values

use dbc_rs::Dbc;

let dbc = Dbc::parse(dbc_content)?;

// Encode signal values into a CAN frame payload (standard 11-bit ID)
let payload = dbc.encode(0x100, &[
    ("RPM", 2500.0),
    ("Temperature", 85.0),
], false)?;

Embedded (no_std)

[dependencies]
dbc-rs = { version = "0.4", default-features = false, features = ["heapless"] }

See examples/ for complete working examples:

  • decode.rs - Signal decoding basics
  • decode_frame.rs - Using embedded-can Frame trait
  • encode.rs - Encoding signals to CAN payloads
  • create_dbc.rs - Building DBC files programmatically
  • parse_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
attributes BA_DEF_, BA_DEF_DEF_, BA_ support Yes

Documentation

License

MIT OR Apache-2.0. See LICENSING.md.

Dependencies