Crates.io | rpc-core |
lib.rs | rpc-core |
version | 0.3.2 |
source | src |
created_at | 2023-11-28 08:38:21.613872 |
updated_at | 2024-01-04 06:57:52.671739 |
description | a tiny rpc library for rust |
homepage | https://github.com/shuai132/rpc_core/tree/master/rust |
repository | https://github.com/shuai132/rpc_core |
max_upload_size | |
id | 1051705 |
size | 96,581 |
Run the following Cargo command in your project directory:
cargo add rpc-core
Or add the following line to your Cargo.toml:
[dependencies]
rpc-core = { version = "0.3.2", features = ["net"] }
See src/tests for details:
receiver
fn subscribe() {
rpc_s.subscribe("cmd", |msg: String| -> String {
assert_eq!(msg, "hello");
"world".to_string()
});
}
sender (callback)
fn call() {
rpc_c.cmd("cmd")
.msg("hello")
.rsp(|msg: String| {
assert_eq!(msg, "world");
})
.call();
}
sender (future)
async fn call() {
let result = rpc_c.cmd("cmd").msg("hello").future::<String>().await;
assert_eq!(result.result.unwrap(), "world");
}
See examples
for details: src/examples
server
fn server() {
let rpc = Rpc::new(None);
rpc.subscribe("cmd", |msg: String| -> String {
assert_eq!(msg, "hello");
"world".to_string()
});
let server = rpc_server::RpcServer::new(6666, RpcConfigBuilder::new().rpc(Some(rpc.clone())).build());
server.start();
}
client
async fn client() {
let rpc = Rpc::new(None);
let client = rpc_client::RpcClient::new(RpcConfigBuilder::new().rpc(Some(rpc.clone())).build());
client.set_reconnect(1000);
client.open("localhost", 6666);
let result = rpc.cmd("cmd").msg("hello").future::<String>().await;
assert_eq!(result.result.unwrap(), "world");
}
This project is licensed under the MIT license.