Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/ytvwld/update_cell

A Cell<Option<T>> that you can update
https://github.com/ytvwld/update_cell

Last synced: 7 days ago
JSON representation

A Cell<Option<T>> that you can update

Awesome Lists containing this project

README

        

# update_cell

A `Cell>` that you can update

## Why would I need this?

[`Cell::update`] is currently experimental. And it only supports types
that are `Copy`. So if you want to store and modify something that is
neither `Copy` nor has a `Default` (eg. a builder), this crate might be
useful.

## Usage

Add this to your `Cargo.toml`:

```toml
[dependencies]
update_cell = "0.1"
```

And if you have a struct, you can put it inside and modify it:

```rust
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());
```

License: MPL-2.0