다음 예를 고려해 봅시다.
main.rs
use futures::executor::block_on;
use futures::future::{FutureExt, TryFutureExt};
async fn fut1() -> Result<String, u32> {
Ok("ok".to_string())
}
fn main() {
println!("Hello, world!");
match block_on(fut1().and_then(|x| async move { Ok(format!("{} is \"ok\"", x)) })) {
Ok(s) => println!("{}", s),
Err(u) => println!("{}", u)
};
}
Cargo.toml
[dependencies]
futures = "^0.3"
|x| async move {}
대신 표현식에 대해 묻고 async move |x| {}
있습니다. 후자가 더 분명하지만 컴파일 오류가 발생합니다.
error[E0658]: async closures are unstable
그럼 난 경이의 차이 무엇을 async move || {}
하고 || async move {}
. 둘 다 move
키워드 를 사용하여 폐쇄 된 것 같습니다 .
$ rustc --version
rustc 1.39.0 (4560ea788 2019-11-04)