| Crates.io | toy-rpc |
| lib.rs | toy-rpc |
| version | 0.10.0 |
| created_at | 2020-11-24 11:06:48.606901+00 |
| updated_at | 2024-04-19 18:29:04.912671+00 |
| description | An async RPC that mimics golang net/rpc's usage and supports both async-std and tokio |
| homepage | https://github.com/minghuaw/toy-rpc |
| repository | https://github.com/minghuaw/toy-rpc |
| max_upload_size | |
| id | 315794 |
| size | 324,686 |
golang's net/rpc package and supports both async-std and tokio.This project is still being actively developed. I have kind of run out of ideas for features, so feel free to let me know if there is a feature that you want.
toy-rpc aims to be an easy-to-use async RPC tool that is inspired by golang's net/rpc's API.
It supports both async_std and tokio runtimes over either TCP or TLS. Integration with
common HTTP server frameworks such as actix_web, warp and tide are provided.
The overall usage and API should feel similar to that of the golang's net/rpc package. Some of the names are changed
to make them sound more "rusty". Because rust does not come with runtime reflection, attribute macros #[export_impl]
and #[export_trait] / #[export_trait_impl], and attribute #[export_method] are used to mark functions "exported" in golang's
net/rpc perspective.
Some other features of toy-rpc:
Call<Res> is dropped, a cancellation will be sent to the server
and thus propagating the cancellation.More detailed usage can be found in the book and documentation.
This crate uses #![forbid(unsafe_code)] to ensure no usage of unsafe in the crate.
The feature flags can be put into three categories.
Choice of runtime and HTTP framework integration
async_std_runtime: supports usage with async-stdtokio_runtime: supports usage with tokiohttp_tide: enables tide integration on the server side. This also enables async_std_runtime and ws_async_stdhttp_actix_web: enables actix-web integration on the server side. This also enables tokio_runtime and ws_tokiohttp_warp: enables integration with warp on the server side. This also enables tokio_runtime and ws_tokiohttp_axum: enables integration with axum on the server side. This also enables tokio_runtime and ws_tokioChoice of RPC server or client (both can be enabled at the same time)
server: enables RPC serverclient: enables RPC clientChoice of serialization/deserialzation (only one should be enabled at a time)
serde_bincode: (default) the default codec will use bincode
for serialization/deserializationserde_json: the default codec will use serde_json
for json serialization/deserializationserde_cbor: the default codec will use serde_cbor
for serialization/deserializationserde_rmp: the default codec will use rmp-serde
for serialization/deserializationWebSocket support (HTTP integration is implementd with WebSocket)
ws_tokio: enables WebSocket and HTTP integrations with tokio.
This must be enabled for client to use dial_http(addr) or dial_websocket(addr).ws_async_std: enables WebSocket and HTTP integrations with async-std.
This must be enabled for client to use dial_http(addr) or dial_websocket(addr).TLS support
tls: enables TLS supportOther trivial feature flags are listed below, and they are likely of no actual usage for you.
docsstd: serde/std. There is no actual usage right now.By default, only serde_bincode feature is enabled.
You must enable at least one runtime feature flag and the server and/or client to have something usable.
default = ["serde_bincode"]
HTTP integration is provided for actix-web, tide, and warp. More details can be found
in the Book/Integrations and in
examples.
A quickstart example with tokio runtime is provided in the Book/Quickstart.
License: MIT/Apache-2.0