
#[tokio::main]
async fn main() {
let mut service_map = ServiceMap::default();
service_map.register(Foo {});
service_map.register(Bar {});
// prints: "got i64: 123"
service_map.call(123i64).await;
// prints: Point(123.0, 456.0)
service_map.call((123.0f64, 456.0f64)).await;
// prints nothing, since no service has been registered for `Request = &str`
service_map.call("str").await;
}
struct Foo {}
impl Service<i64> for Foo {
type Response = String;
type Future = Ready<String>;
fn call(&mut self, req: i64) -> Ready<String> {
ready(format!("got i64: {req:?}"))
}
}
#[derive(Debug)]
struct Point(f64, f64);
struct Bar {}
impl Service<(f64, f64)> for Bar {
type Response = Point;
type Future = Ready<Point>;
fn call(&mut self, req: (f64, f64)) -> Ready<Point> {
ready(Point(req.0, req.1))
}
}
原文作者:Rust语言中文社区;如有侵权,请联系管理员删除。