E-Ink 新闻日报

← 返回列表

Future trait 缺少一个状态

文章探讨了 Rust Future trait 的一个限制:在 future 返回 Poll::Ready 后再次调用 poll() 是未定义行为,通常会导致 panic。作者指出能够复用已完成的 future 很有用,并介绍了 MaybeDone 这个包装器,它通过新增一个 'done' 状态来安全地处理此场景。

背景

Rust 异步生态依赖 Future trait,该 trait 仅定义了两个完成状态(Pending 和 Ready)。当代码意外地对已完成的 future 多次调用 poll 时,这种设计选择可能导致运行时 panic。

来源
Lobsters
发布时间
2026年10月29日 12:24
评分
6.0 / 10