Rust tokio::与tokio::net::UnixStream panics异步运行
东京:运行异步+期货0.3+东京:网络:UnixStream 安装程序 代码 跑Rust tokio::与tokio::net::UnixStream panics异步运行,rust,rust-tokio,Rust,Rust Tokio,东京:运行异步+期货0.3+东京:网络:UnixStream 安装程序 代码 跑 运行`target/debug/main bin main` 线程“tokio-runtime-worker-0”因“尚未实现”而惊慌失措:异步等待预览当前仅支持futures 0.1。如果要使用futures 0.3',/Users/.cargo/registry/src/github.com-1ec6299db9ec823/tokio-async-await-0.1.6/src/compat/backward,
运行`target/debug/main bin main`
线程“tokio-runtime-worker-0”因“尚未实现”而惊慌失措:异步等待预览当前仅支持futures 0.1。如果要使用futures 0.3',/Users/.cargo/registry/src/github.com-1ec6299db9ec823/tokio-async-await-0.1.6/src/compat/backward,请使用futures 0.3的兼容层。rs:76:5
注意:使用'RUST_BACKTRACE=1'环境变量运行以显示回溯。
线程“tokio-runtime-worker-1”因“尚未实现”而惊慌失措:异步等待预览当前仅支持futures 0.1。如果要使用futures 0.3',/Users/.cargo/registry/src/github.com-1ec6299db9ec823/tokio-async-await-0.1.6/src/compat/backward,请使用futures 0.3的兼容层。rs:76:5
编译器强制我使用futures 0.3
等待!()
需要futures 0.3(不使用futures 0.1编译)async{}
块需要期货0.3(因为await!(async{})
工作)tokio::run_async
需要futures 0.3(不使用futures 0.1编译)使用期货:{Future,FutureExt};
使用futures::compat::compat;
东京大学公共图书馆(未来:F){
tokio::spawn(Compat::new(Box::pin(
future.map(|()|->结果{Ok(())})
)));
}
在等待中使用期货0.3
(不是tokio::wait
),并使用这些函数,而不是tokio::run\u async、tokio::spawn\u async
非工作溶液
错误消息建议使用futures 0.1,但将futures 0.3转换为0.1并使用tokio::Wait代码>不起作用:
使用东京::等待;
...
等待!(未来03.进入等待中);
跑
我遇到了类似的问题。我正在使用以下实用程序使0.3 futures在Tokio运行时上可运行:
fn compat<F: StdFuture + Send + 'static>(f: F) -> impl Future<Item=F::Output, Error=()> {
f.unit_error().boxed().compat()
}
fn兼容
#![feature(await_macro, async_await, futures_api)]
use tokio::net::UnixStream;
use tokio::net::UnixListener;
use futures::compat::Future01CompatExt;
use futures::compat::Stream01CompatExt;
use futures::StreamExt;
fn main() {
let _ = std::fs::remove_file("/tmp/test.sock");
tokio::run_async(async {
let fut = UnixListener::bind(&"/tmp/test.sock").unwrap().incoming().compat();
let fut = fut.for_each(|stream| {
let _ = stream;
println!("new conn");
futures::future::ready(())
});
tokio::spawn_async(fut);
let fut = UnixStream::connect(&"/tmp/test.sock").compat();
let _conn = await!(fut);
});
}
thread 'tokio-runtime-worker-0' panicked at 'not yet implemented: async-await-
preview currently only supports futures 0.1. Use the compatibility layer of futures 0.3 instead, if you want to use futures 0.3.', /Users/.cargo/registry/src/github.com-1ecc6299db9ec823/tokio-async-await-0.1.6/src/compat/backward.rs:76:5
fn compat<F: StdFuture + Send + 'static>(f: F) -> impl Future<Item=F::Output, Error=()> {
f.unit_error().boxed().compat()
}