Crates.io | pirates |
lib.rs | pirates |
version | 0.1.2 |
source | src |
created_at | 2022-10-08 17:06:51.552004 |
updated_at | 2023-03-29 15:58:17.703606 |
description | Simple async RPC lib |
homepage | https://github.com/tehsmeely/pirates |
repository | https://github.com/tehsmeely/pirates |
max_upload_size | |
id | 683648 |
size | 43,729 |
Rust ArrrrPC Lib
Pirates, a simple and straightforward interface for serving and calling RPCs from async rust programs
Define an RPC
pub struct AddName {}
#[pirates::rpc_definition]
impl AddName {
fn name() -> RpcId {
RpcId::AddName
}
fn implement(state: &mut ServerState, query: String) -> RpcResult<()> {
state.names.push(query);
Ok(())
}
}
Serve it
let mut server = RpcServer::new(state.clone());
server.add_rpc(Box::new(rpcs::AddName::server()));
Call it
let addr = "200.1.3.7:5959";
let name = String::from("Gaspode the wonder dog");
pirates::call_client(addr, name, rpcs::AddName::client()).await;
let names = call_client(addr, (), rpcs::GetNames::client()).await;
assert_eq!(vec![String::from("Gaspode the wonder dog")], names);
Documentation available on docs.rs
And example "name server" is available in example/
.
This produces a CLI binary from which you can host the server and then query it
separately to add and print names. See the README in that directory for more info
Apache-2.0 Or MIT