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

// *** before: ***
// цепочка из комбинаторов: порядок шагов приходилось читать наизнанку
fn load(id: u32) -> impl Future<Item = StringError = Error> {
    fetch_user(id)
        .and_then(|user| fetch_profile(user.profile_id))
        .map(|profile| profile.name)
}

// *** in version 1.39: ***
// тот же порядок шагов, но записан обычным последовательным кодом
async fn load(id: u32) -> Result<StringError> {
    let user = fetch_user(id).await?;
    let profile = fetch_profile(user.profile_id).await?;
    Ok(profile.name)
}