Skip to content

Instantly share code, notes, and snippets.

@Frando
Created July 23, 2025 08:49
Show Gist options
  • Select an option

  • Save Frando/891a533be14a830987bf030e5e96ea5f to your computer and use it in GitHub Desktop.

Select an option

Save Frando/891a533be14a830987bf030e5e96ea5f to your computer and use it in GitHub Desktop.
use irpc::{
channel::{mpsc, oneshot},
rpc_requests,
};
use serde::{Deserialize, Serialize};
#[derive(Debug, Serialize, Deserialize)]
struct PutRequest {
key: String,
value: String,
}
#[derive(Debug, Serialize, Deserialize)]
struct GetRequest {
key: String,
}
#[rpc_requests(TestMessage, alias = "Msg")]
#[derive(Debug, Serialize, Deserialize)]
enum TestProtocol {
#[rpc(tx = oneshot::Sender<String>)]
Put(PutRequest),
#[rpc(tx = mpsc::Sender<String>)]
Get(GetRequest),
}
fn foo(msg: PutMsg) -> String {
// does not compile!
format!(
"Received Put request with key: {}, value: {}",
msg.inner.key, msg.inner.value
)
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment