# urpc A minimalistic RPC framework for Rust, designed for simplicity and performance. ## Features - Async/await support - TCP and Unix socket transport - Procedural macros for service definitions - Serialization with bincode - Lightweight and fast ## Example ```rust use urpc::*; #[urpc::service] trait Hello { type Error = (); async fn hello(name: String) -> String; } struct HelloServer; impl Hello for HelloServer { async fn hello(&self, _ctx: urpc::Context, name: String) -> Result { Ok(format!("Hello, {}!", name)) } } #[tokio::main] async fn main() { // Server let listener = urpc::tcp::bind("127.0.0.1:8080").await.unwrap(); tokio::spawn(async move { urpc::Server::default() .with_listener(listener) .with_service(HelloServer.into_service()) .serve() .await }); // Client let channel = urpc::ClientChannel::new( urpc::tcp::connect("127.0.0.1:8080").await.unwrap() ); let client = HelloClient::new(channel); let response = client.hello("World".to_string()).await.unwrap(); println!("{}", response); // "Hello, World!" } ``` ## License Licensed under either of - Apache License, Version 2.0 - MIT License at your option.