#update #cell #generic

no-std update_cell

一个你可以更新的 Cell<Option<T>>

1 个不稳定版本

0.1.0 2023年7月21日

#2953 in Rust 模式

Download history 1/week @ 2024-03-26 15/week @ 2024-04-02 7/week @ 2024-04-09 30/week @ 2024-04-16 8/week @ 2024-04-23 2/week @ 2024-05-21 29/week @ 2024-05-28 52/week @ 2024-06-04 22/week @ 2024-06-11 10/week @ 2024-06-18

91 每月下载量

MPL-2.0 许可证

5KB
54

update_cell

一个你可以更新的 Cell<Option<T>>

为什么我需要这个?

Cell::update 目前是实验性的。它只支持 Copy 类型的类型。所以如果你想要存储和修改既不是 Copy 也没有 Default(例如构建器)的类型,这个crate可能很有用。

用法

将以下内容添加到你的 Cargo.toml

[dependencies]
update_cell = "0.1"

如果你有一个结构体,你可以将其放在里面并修改它

use update_cell::UpdateCell;

struct MySuperFancyStruct {
    inner: bool
}

impl MySuperFancyStruct {
    fn new() -> Self {
        Self { inner: false }
    }

    fn toggle(mut self) -> Self {
        self.inner = !self.inner;
        self
    }
}

let mut cell = UpdateCell::new(MySuperFancyStruct::new());
cell.update(|s| s.toggle());

许可证: MPL-2.0


lib.rs:

一个你可以更新的 Cell<Option<T>>

为什么我需要这个?

Cell::update 目前是实验性的。它只支持 Copy 类型的类型。所以如果你想要存储和修改既不是 Copy 也没有 Default(例如构建器)的类型,这个crate可能很有用。

用法

将以下内容添加到你的 Cargo.toml

[dependencies]
update_cell = "0.1"

如果你有一个结构体,你可以将其放在里面并修改它

use update_cell::UpdateCell;

struct MySuperFancyStruct {
    inner: bool
}

impl MySuperFancyStruct {
    fn new() -> Self {
        Self { inner: false }
    }

    fn toggle(mut self) -> Self {
        self.inner = !self.inner;
        self
    }
}

let mut cell = UpdateCell::new(MySuperFancyStruct::new());
cell.update(|s| s.toggle());

无运行时依赖