essrpc

Crates.ioessrpc
lib.rsessrpc
version0.4.1
sourcesrc
created_at2018-12-05 02:31:18.547226
updated_at2021-10-02 23:12:26.752049
descriptionRPC using natural trait definitions and calls.
homepage
repositoryhttps://github.com/Electron100/essrpc
max_upload_size
id100180
size71,870
(Electron100)

documentation

https://docs.rs/essrpc/

README

Latest Version docs

Electron's Super Simple RPC (ESSRPC)

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 implements From<RPCError>.
  • Uses only parameter and returns types which implement Serialize
  • Is not unsafe

Please see the documentation for examples and more details.

Status

Alpha. Things are expected to work, but only a small amount of real world usage has occurred.

Configurable Features

  • async_client: Enables asynchronous clients
  • bincode_transport: Enables BincodeTransport
  • json_transport: Enables JSONTransport
  • wasm_bindgen: Enables wasm-bindgen compatibility. Specifically, UUID generation in the JSON transport uses wasm-bindgen compatible randomness.

Inspirations and Motivations

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.

Commit count: 80

cargo fmt