// the find
FreeOpcUa/async-opcua
Fully featured implementation of OPC-UA in Rust.
A fully featured OPC-UA (IEC 62541) client and server implementation in Rust, forked from locka99/opcua with a broader scope and async-first design. OPC-UA is the dominant communication standard for industrial automation — PLCs, SCADA systems, factory equipment. This is one of the few serious Rust implementations that covers the actual security layer, subscriptions, and the extensible type system.
Proc-macro-driven encoding via async-opcua-macros derives Binary and JSON serialization for custom types — the right call for OPC-UA's extensible type system, avoids hand-writing hundreds of struct encoders. The async-opcua-codegen crate reads NodeSet2 XML and generates typed Rust for companion standards (robotics, PLCopen, etc.), which is how you actually work with vendor-specific profiles. 52 pre-generated core namespace nodesets ship in the box so you can reference standard types without running codegen first. The crypto crate is a real implementation — X.509 certificate management, AES-128/256, RSA security policies — not a stub that skips security because it's hard.
Tutorial docs are explicitly 'work in progress' per the README — you will be reading samples and docs.rs to figure out basic usage, which is painful for a spec this large. The MSRV policy ('latest stable only, no promises') is directly hostile to OPC-UA's actual deployment environment: industrial edge hardware runs older compiler toolchains and won't be running a weekly rustup update. 126 stars is thin community support for a complex industrial protocol — when your PLC integration breaks in production, there are very few people who know this codebase. Being a fork with diverged design decisions from locka99/opcua fragments an already small ecosystem; it's not clear which implementation is more interoperable against OPC Foundation compliance tests.