17 releases

Uses new Rust 2021

0.3.2 Jan 10, 2023
0.3.1 Dec 21, 2022
0.2.3 Dec 20, 2022
0.1.9 Dec 7, 2022
0.1.8 Nov 26, 2022

#1853 in Network programming

Download history 149/week @ 2022-11-18 102/week @ 2022-11-25 73/week @ 2022-12-02 103/week @ 2022-12-09 138/week @ 2022-12-16 100/week @ 2022-12-23 71/week @ 2022-12-30 106/week @ 2023-01-06 121/week @ 2023-01-13 91/week @ 2023-01-20

404 downloads per month
Used in 14 crates (2 directly)

Apache-2.0/MIT

110KB
2K SLoC

Quic-Rpc

A streaming rpc system based on quic

Latest Version Docs Badge license badge status badge

Goals

Interaction patterns

Provide not just request/response RPC, but also streaming in both directions, similar to grpc.

  • 1 req -> 1 res
  • 1 req, update stream -> 1 res
  • 1 req -> res stream
  • 1 req, update stream -> res stream

It is still a RPC system in the sense that interactions get initiated by the client.

Transports

  • memory transport with very low overhead. In particular, no ser/deser, currently using flume
  • quic transport via the quinn crate
  • transparent combination of the above

API

  • The API should be similar to the quinn api. Basically "quinn with types".

Non-Goals

  • Cross language interop. This is for talking from rust to rust
  • Any kind of verisoning. You have to do this yourself
  • Making remote message passing look like local async function calls
  • Being runtime agnostic. This is for tokio

Example

computation service

Dependencies

~3.5–9.5MB
~153K SLoC