A Rust wrapper for gRPC Core providing high-performance RPC with async support and HTTP/2.
gRPC-rs is a Rust implementation of the gRPC framework, built as a wrapper around the C-based gRPC Core library. It enables Rust developers to build efficient, cross-platform RPC services with native support for asynchronous operations and modern protocols like HTTP/2.
Rust developers building high-performance, cross-platform RPC services, particularly those requiring interoperability with the broader gRPC ecosystem.
Developers choose gRPC-rs for its idiomatic Rust interface to gRPC Core, offering high performance, asynchronous operations, and full interoperability with other gRPC implementations while leveraging Rust's safety and concurrency features.
The gRPC library for Rust built on C Core library and futures
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.
Supports unary and streaming RPC calls using Rust's futures and async/await, enabling efficient non-blocking I/O as highlighted in the asynchronous calls feature.
Offers SSL/TLS support via BoringSSL or OpenSSL with feature flags to handle linking issues, ensuring secure communication as per the TLS encryption section.
Passes gRPC interoperability tests, ensuring compatibility with services in other languages like Go or Python, which is key for cross-platform microservices.
Includes health check services out of the box, making it easier to monitor RPC endpoints in production without additional setup.
Supports both protobuf and prost codecs via features, allowing developers to choose their preferred serialization library for Protobuf integration.
Lacks support for gRPC reflection and server-side load reporting, which are marked as not implemented in the README's status section.
Requires CMake, binutils, and potentially LLVM/Clang for some setups, making installation more involved than pure Rust crates, especially on Windows with additional tools.
Default BoringSSL can conflict with OpenSSL in other dependencies, forcing developers to use feature flags like 'openssl' to resolve linker errors, as noted in the error section.
Bindings are only pre-generated for x86_64/arm64 Linux; other platforms require compile-time generation, increasing build complexity and time.