Skip to main content

mill_rpc/
lib.rs

1//! Mill-RPC: An Axum-inspired RPC framework built on Mill-IO.
2//!
3//! # Quick Start
4//!
5//! ```ignore
6//! // Define a service — generates a `calculator` module
7//! mill_rpc::service! {
8//!     service Calculator {
9//!         fn add(a: i32, b: i32) -> i32;
10//!     }
11//! }
12//!
13//! // Server side
14//! struct MyCalc;
15//! impl calculator::Service for MyCalc {
16//!     fn add(&self, _ctx: &RpcContext, a: i32, b: i32) -> i32 { a + b }
17//! }
18//!
19//! // Register
20//! RpcServer::builder()
21//!     .service(calculator::server(MyCalc))
22//!     .build(&event_loop)?;
23//!
24//! // Client side
25//! let client = calculator::Client::new(transport, codec, 0);
26//! client.add(2, 3)?;
27//! ```
28
29pub mod client;
30pub mod server;
31
32pub mod prelude;
33
34// Re-exports from core
35pub use mill_rpc_core::{
36    Codec, CodecType, Flags, Frame, FrameHeader, MessageType, RpcContext, RpcError, RpcStatus,
37    RpcTransport, ServiceDispatch,
38};
39
40// Re-export the service! macro
41pub use mill_rpc_macros::service;
42
43pub use client::RpcClient;
44pub use server::RpcServer;