#options #ing #deferring

some-mut

延迟取用 Option 的实用库

3 个版本

0.1.2 2023年4月14日
0.1.1 2023年4月14日
0.1.0 2023年4月14日

#100#options

每月 31 次下载

MIT 许可协议

7KB
80

some-mut

一个实用库,主要用于访问 Some 然后不可失败地 take()

例如,在 Future 实现,你可能需要多次重新进入函数,这时不能直到子未来 Ready 才能调用 take()

// for a theoretical `StreamExt::forward()`/`SinkExt::send_all()` implementation:
fn poll(mut self: Pin<&mut Self>, cx: &mut Context<'_>) -> Poll<Result<(), Error>> {
    if let Some(buffered_item) = self.buffered_item.some_mut() {
        ready!(self.sink.poll_ready(cx))?;
        self.sink.start_send(buffered_item.take())?;
    }
    // ...
}

许可协议

本项目采用 MIT 许可协议。请参阅 LICENSE 文件以获取更多信息。


lib.rs:

一个实用库,主要用于访问 Some 然后不可失败地 take()

例如,在 Future 实现,你可能需要多次重新进入函数,这时不能直到子未来 Ready 才能调用 take()

use some_mut::OptionExt;
// for a theoretical `StreamExt::forward()`/`SinkExt::send_all()` implementation:
fn poll(mut self: Pin<&mut Self>, cx: &mut Context<'_>) -> Poll<Result<(), Error>> {
    let me = self.project();
    if let Some(buffered_item) = me.buffered_item.some_mut() {
        ready!(me.sink.poll_ready(cx))?;
        me.sink.start_send(buffered_item.take())?;
    }
    // ...
}

无运行时依赖