# Ripsy RPC between Server/Client written in Rust ## Why Ripsy? RRPC (Rust Remote Procedure Call) is pronounced as ripsy, thus the name of this crate. ## Example **client/main.rs** ```rust use shared::add; #[tokio::main] async fn main() { ripsy::client::init("http://localhost:3000"); let r: Result = add(2).await.unwrap(); println!("{r:?}"); // Ok("2") } ``` **server/main.rs** ```rust use axum::routing::post; use ripsy::Bincode; use shared::add; #[tokio::main] async fn main() { let app = ripsy::ripsy!(add,); axum::Server::bind(&"0.0.0.0:3000".parse().unwrap()) .serve(app.into_make_service()) .await .unwrap(); } ``` **shared/lib.rs** ```rust use ripsy::endpoint; #[endpoint(mutation)] pub async fn add(n: u32) -> Result { if false { work()?; // ? works fine } Ok(n.to_string()) } fn work() -> Result<(), String> { Err("err".to_string()) } ```