dbc-rs

Crates.iodbc-rs
lib.rsdbc-rs
version0.4.1
created_at2025-11-25 06:03:35.122022+00
updated_at2025-12-29 23:53:05.69798+00
descriptionDatabase CAN (DBC) parsing and editing library
homepagehttps://github.com/reneherrero/dbc-rs
repositoryhttps://github.com/reneherrero/dbc-rs
max_upload_size
id1949235
size860,543
René Herrero (reneherrero)

documentation

https://docs.rs/dbc-rs

README

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.

Commit count: 0

cargo fmt