// the find
alttch/rmodbus
Modbus framework for Rust
rmodbus is a Modbus codec and context manager for Rust — it handles frame parsing and register storage but intentionally provides no transport layer. You wire it to whatever socket or serial port you're using. Built for industrial automation, it ships as part of the EVA ICS and RoboPLC stacks.
no_std support is genuine and well-thought-out, with multiple vector backends (std Vec, heapless, fixedvec) so it works on bare-metal MCUs without heap. Custom-sized storage via const generics means you're not paying 60KB for a device that only needs 100 registers. Fuzz testing on the frame parser is exactly right for protocol code — malformed frames from flaky hardware are a real problem. The transport-agnostic design is a feature, not laziness: it means the same codec works over TCP, RTU serial, ASCII, and UDP without a protocol abstraction layer in the way.
The README has a literal `<todo: insert version number here>` in the section on RegisterRepresentable — that's shipped documentation, not a draft. The client-side read loop (read 6 bytes, then read the rest) is exposed boilerplate that callers will copy-paste and get wrong when the socket returns partial reads; that should be in the library. No async-native path — the README points you to a third-party crate (RoboPLC) for anything beyond raw frame processing, which fragments the ecosystem for a crate at v0.9. Star count (169) is low for something claiming production use at 1M+ sensor deployments, which raises the question of whether the industrial users are on a private fork.