1 个不稳定版本
0.1.0 | 2023年7月21日 |
---|
#2953 in Rust 模式
91 每月下载量
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());