【发布时间】:2021-04-24 23:47:00
【问题描述】:
我正在编写一个通过 unix 域套接字与它的主机一起工作的 http 服务器。服务器是使用 hyper 编写的,我通过 socket2 连接到 UDS。
这是我的代码:
let socket = Socket::new(Domain::UNIX, Type::STREAM, None)?;
let socket_address = SockAddr::unix("unix://tmp/test.sock")?;
socket.bind(&socket_address)?;
socket.listen(128)?;
let server = hyper::server::Server::builder(socket.into()).serve(service);
这样做的正确方法是什么?我收到一条错误消息,提示 cannot infer type for type parameter I
error[E0698]: type inside `async fn` body must be known in this context
--> src/server.rs:65:64
|
65 | let server = hyper::server::Server::builder(socket.into()).serve(service);
| ^^^^^ cannot infer type for type parameter `I`
|
note: the type is part of the `async fn` body because of this `await`
--> src/server.rs:66:13
|
66 | let _ = server.await?;
| ^^^^^^^^^^^^
I 是hyper::server::Server 的通用参数。虽然我知道是什么导致了这个问题:编译器无法确定 socket.into() 被转换成什么,但我不知道如何解决它。
如果我的理解有误,请指正。我可以得到一些帮助吗?
【问题讨论】:
标签: sockets rust unix-socket hyper