#async #future #marked #type #wrap #must-use #box-futures

must_future

一个标记为 must_use 的包装 future,主要用于包装 BoxFutures

3 个版本

0.1.2 2020 年 6 月 11 日
0.1.1 2020 年 4 月 10 日
0.1.0 2020 年 4 月 3 日

#544 in 异步

Download history 1217/week @ 2023-11-20 674/week @ 2023-11-27 616/week @ 2023-12-04 962/week @ 2023-12-11 698/week @ 2023-12-18 263/week @ 2023-12-25 343/week @ 2024-01-01 964/week @ 2024-01-08 1009/week @ 2024-01-15 1054/week @ 2024-01-22 886/week @ 2024-01-29 1295/week @ 2024-02-05 478/week @ 2024-02-12 594/week @ 2024-02-19 765/week @ 2024-02-26 1096/week @ 2024-03-04

2,981 每月下载量
用于 78 个 crate (12 直接)

Apache-2.0

8KB
121

Crates.io Crates.io

must_future

BoxFutures 不能被标记为 #[must_use],因为它们只是类型定义。这个 newtype 结构体将 BoxFuture 包装成可以标记 #[must_use] 的东西。

无法编译

#![deny(unused_must_use)]

use futures::future::FutureExt;

#[tokio::main]
async fn main() {
    fn get_future() -> must_future::MustBoxFuture<'static, ()> {
        async { }.boxed().into()
    }

    get_future(); // unused `must_future::MustBoxFuture` that must be used
}

lib.rs:

BoxFutures 不能被标记为 #[must_use],因为它们只是类型定义。这个 newtype 结构体将 BoxFuture 包装成可以标记 #[must_use] 的东西。

无法编译

#![deny(unused_must_use)]

use futures::future::FutureExt;

#[tokio::main]
async fn main() {
    fn get_future() -> must_future::MustBoxFuture<'static, ()> {
        async { }.boxed().into()
    }

    get_future(); // unused `must_future::MustBoxFuture` that must be used
}

依赖

~1MB
~16K SLoC