// the find
grpc/grpc-rust
A native gRPC client & server implementation with async/await support.
tonic is the de facto gRPC library for Rust, built on tokio/hyper with prost for protobuf codegen. It covers the full gRPC surface: unary, client/server/bidi streaming, TLS, health checking, reflection, interceptors, and load balancing. If you're writing a Rust service that needs to talk gRPC, this is what you use.
The HTTP/2 layer is hyper under the hood, which means it inherits a mature, well-tested transport rather than reinventing one. The codegen story via tonic-build is solid — drop a .proto file, call compile_protos() in build.rs, and you get typed client/server stubs with zero boilerplate. The examples directory is unusually good: authentication, interceptors, compression, JSON codec, custom load balancing, UDS — real scenarios, not just hello world. The modular crate split (tonic, tonic-build, tonic-health, tonic-reflection) means you only pull in what you need.
The master branch note at the top of the README is a red flag — breaking changes in flight mean the docs and crates.io version may diverge until the release lands. gRPC-Web support exists in examples but isn't a first-class crate, so browser clients need a proxy or a third-party shim. Service config (retry policy, hedging) is parsed but enforcement is incomplete compared to the reference Java/Go implementations, which will surprise anyone migrating from those ecosystems. protoc is a hard build dependency for tonic-build's compile_protos, which adds friction in hermetic build environments where you can't just apt-get install protobuf-compiler.