Изменения в новых версиях / Rust 1.39

// *** before: ***
// значение-фьючерс собиралось из готовых комбинаторов
let task = futures::future::ok::<_Error>(2).map(|x| x * 2);

// *** in version 1.39: ***
// асинхронный блок - это выражение, дающее фьючерс
let task = async {
    let x = fetch_number().await?;
    Ok::<_, Error>(x * 2)
};

// async move забирает захваченные значения себе
let name = String::from("prod");
let named = async move {
    println!("{}", name);
};