ESSRPC is a lightweight RPC library for Rust which aims to enable RPC calls as transparently as possible through calls to ordinary trait methods.
- Allows ordinary calls to trait methods to call an implementation across an RPC boundary (in another process, across the network, etc)
- Is agnostic to the underlying transport used.
- Uses only stable Rust.
The magic is performed by the essrpc
attribute macro which may
be applied to any trait whose functions each meet the following conditions:
- Returns a
Result
whose error type implementsFrom<RPCError>
. - Uses only parameter and returns types which implement
Serialize
- Is not unsafe
Please see the documentation for examples and more details.
Alpha. Things are expected to work, but only a small amount of real world usage has occurred.
async_client
: Enables asynchronous clientsbincode_transport
: Enables BincodeTransportjson_transport
: Enables JSONTransportwasm_bindgen
: Enables wasm-bindgen compatibility. Specifically, UUID generation in the JSON transport uses wasm-bindgen compatible randomness.
ESSRPC was inspired by tarpc and by the build_rpc_trait!
macro
from jsonrpc. Both of these are more mature projects. The recent
stabilization of procedural macros allows ESSRPC to generate an RPC
client/server pair from a more natural trait defintion. ESSRPC also makes
fewer assumptions about the underlying RPC transport.