// the find
ros2-rust/ros2_rust
Rust bindings for ROS 2
Rust bindings for ROS 2, providing a client library (rclrs) that lets you write ROS 2 nodes in Rust instead of C++ or Python. Covers the core ROS 2 primitives: pub/sub, services, actions, parameters, timers, and executors. Aimed at robotics developers who want memory safety without the C++ footguns, or want to integrate Rust code into an existing ROS 2 stack.
- Feature coverage is genuinely solid for a 0.x library: actions, loaned messages (zero-copy), dynamic message introspection, parameter services, and async variants of most primitives are all present.
- Pre-generated rcl bindings per ROS distribution (humble/jazzy/kilted/rolling) means you don't need libclang at runtime and cross-distro support is explicit rather than accidental.
- The worker pattern for sharing state across callbacks is a thoughtful Rust-native design choice rather than just porting the C++ node class directly.
- CI covers minimal toolchain, stable, and Windows builds across multiple ROS distros, which is more disciplined than most robotics-adjacent Rust projects.
- Setup friction is genuinely painful: getting examples running requires cloning 6-7 separate upstream ROS repos manually, plus a workaround for issue #557 that requires installing extra apt packages. This is worse than it looks in the README.
- No stability guarantees at all, explicitly called out—fine for experiments, but means API churn is expected and you cannot safely depend on this for production robots without pinning to a commit.
- The colcon build system integration means you're still tied to the ROS 2 build toolchain rather than being able to use plain `cargo build`, which makes pure Rust CI and library reuse harder.
- No lifecycle node support visible in the feature list or source tree, which is a significant gap for production ROS 2 nodes that need managed state transitions.