0
点赞
收藏
分享

微信扫一扫

async Lifetimes


async Lifetimes

(Jin Qing’s Column, Sep., 2024)

From: https://rust-lang.github.io/async-book/03_async_await/01_chapter.html

The Future’s lifetime is bounded by the parameter’s.

// This function:
async fn borrow_x(x: &u8) -> u8 { *x }

// Is equivalent to this function:
fn borrow_x_expanded<'a>(x: &'a u8) -> impl Future<Output = u8> + 'a {
    async move { *x }
}

Change non-static lifetime to static lifetime:

fn bad() -> impl Future<Output = u8> {
    let x = 5;
    borrow_x(&x) // ERROR: `x` does not live long enough
}

fn good() -> impl Future<Output = u8> {
    async {
        let x = 5;
        borrow_x(&x).await
    }
}


举报

相关推荐

@Async

Spring @Async

js async

std::async

async/await

promise&async

0 条评论