Define your RPC signatures, and use them with various client/server implementations.
Arpy is in it's infancy, and not well tested yet.
[Reqwest] and [Reqwasm] clients are available, along with [Axum] and [Actix] servers.
Define your RPC signatures, implement them on the server, and call them on the client. These can be in separate crates, or all in one depending on your workflow.
```rust
pub struct Add(pub i32, pub i32);
impl FnRemote for Add { type Output = i32; }
pub struct TryMultiply(pub i32, pub i32);
impl FnRemote for TryMultiply {
type Output = Result Example using [Axum]: ```rust
async fn add(args: &Add) -> i32 {
args.0 + args.1
} async fn try_multiply(args: &TryMultiply) -> Result let app = Router::new()
.httprpcroute("/http", add)
.httprpcroute("/http", try_multiply); Server::bind(&SocketAddr::new(IpAddr::V4(Ipv4Addr::LOCALHOST), 9090))
.serve(app.intomakeservice())
.await
.unwrap();
``` Example using [Reqwasm]: ```rust
let connection = http::Connection::new(&format!("http://127.0.0.1:9090/api"));
let result = Add(1, 2).call(&connection).await?; assert_eq!(3, result);
```Implementing a Server
Calling Remote Procedures
Other Features