Crate rpc_router

source ·
Expand description

rpc::router module provides the type and implementation for json rpc routing.

It has the following constructs:

  • RpcRouter holds the HashMap of method_name: Box<dyn RpcHandlerWrapperTrait>.
  • RpcHandler trait is implemented for any async function that, with (S1, S2, ...[impl IntoParams]), returns web::Result<Serialize> where S1, S2, … are types that implement FromResources (see router/from_resources.rs and src/resources.rs).
  • IntoParams is the trait to implement to instruct how to go from Option<Value> json-rpc params to the handler’s param types.
  • IntoParams has a default into_params implementation that will return an error if the params are missing.
#[derive(Deserialize)]
pub struct ParamsIded {
  id: i64,
}

impl IntoParams for ParamsIded {}
  • For custom IntoParams behavior, implement the IntoParams::into_params function.
  • Implementing IntoDefaultParams on a type that implements Default will auto-implement IntoParams and call T::default() when the params Option<Value> is None.

Macros§

  • Macro generatring the RpcHandler implementations for zero or more FromRpcResources with the last argument being IntoRpcParams and one with not last IntoRpcParams argument.
  • A simple macro to create a new RpcRouter and add each rpc handler-compatible function along with their corresponding names.

Structs§

Enums§

Traits§

  • Marker trait with a blanket implementation that return T::default if the params: Option<Value> is none.
  • IntoParams allows for converting an Option<Value> into the necessary type for RPC handler parameters. The default implementation below will result in failure if the value is None. For customized behavior, users can implement their own into_params method.
  • The Handler trait that will be implemented by rpc handler functions.

Type Aliases§

Derive Macros§

  • Will implement IntoRpcHandlerError for this target type. The target type must implement std::error::Error
  • Will implement IntoRpcParams for this target type. The target type must implement Deserialize
  • Will implement FromRpcResources for this target type. The target type must implement Clone + Send + Sync