grpc_quic/lib.rs
1//! # grpc-quic
2//!
3//! A custom QUIC transport implementation for [tonic](https://docs.rs/tonic) gRPC.
4//!
5//! ## Overview
6//!
7//! `grpc-quic` replaces the default HTTP/TCP transport with QUIC streams
8//! while preserving full gRPC semantics, protobuf encoding, and tonic service
9//! abstractions. All RPC data is transmitted as opaque gRPC-encoded bytes over
10//! QUIC streams secured by TLS 1.3.
11//!
12//! ```text
13//! tonic (RPC layer: service traits + protobuf codec)
14//! ↓
15//! grpc-quic (tower::Service transport adapter)
16//! ↓
17//! quinn (QUIC bi-directional streams, 1 stream = 1 RPC call)
18//! ↓
19//! UDP + TLS 1.3 (rustls)
20//! ```
21//!
22//! ## Key design principles
23//!
24//! - `grpc-quic` does **not** change gRPC semantics.
25//! - `grpc-quic` **only** replaces the transport layer (TCP → QUIC).
26//! - tonic / prost remain fully intact as the RPC layer.
27//!
28//! ## Quick start
29//!
30//! See the `examples/` directory for unary, client-streaming, server-streaming,
31//! and bidirectional-streaming demos.
32
33#![forbid(unsafe_code)]
34#![warn(rust_2018_idioms)]
35
36pub use grpc_quic_client as client;
37pub use grpc_quic_server as server;
38pub use grpc_quic_transport as transport;
39
40#[cfg(feature = "metrics")]
41pub use grpc_quic_metrics as metrics;
42
43#[cfg(feature = "discovery")]
44pub use grpc_quic_discovery as discovery;