mirror of
https://gitee.com/openharmony/third_party_rust_lazycell
synced 2024-10-06 21:23:39 +00:00
668bb2fa97
Add a `T: Send` to the existing `T: Sync` restriction on the `AtomicLazyCell` `Sync` impl. This is necessary because filling an `AtomicLazyCell` only requires a reference to the cell (i.e. `&AtomicLazyCell`), which means that an empty `&AtomicLazyCell<T>` can be passed to a child thread (provided that `AtomicLazyCell<T>: Sync` is satisfied), and filled on the child thread. The filled value would then be on the stack of, and destroyed by, the parent thread. Kudos to dbaupp on Reddit for this recommendation. Closes #67. BREAKING CHANGE: the `AtomicLazyCell` `Sync` impl now has a `<T: Sync + Send>` constraint instead of a `<T: Sync>` constraint. To migrate your code, remove any `AtomicLazyCell<T>` instances where `<T: Sync + !Send>`, as this usecase is no longer supported. |
||
---|---|---|
src | ||
tests | ||
.clog.toml | ||
.gitignore | ||
.travis.yml | ||
Cargo.toml | ||
CHANGELOG.md | ||
CONTRIBUTING.md | ||
CONTRIBUTORS.md | ||
LICENSE-APACHE | ||
LICENSE-MIT | ||
README.md | ||
rustfmt.toml |
lazycell
Linux | |
Rust library providing a lazily filled Cell.
Table of Contents
Usage
Add the following to your Cargo.toml
:
[dependencies]
lazycell = "0.5"
And in your lib.rs
or main.rs
:
extern crate lazycell;
See the API docs for information on using the crate in your library.
Contributing
Contributions are always welcome! If you have an idea for something to add (code, documentation, tests, examples, etc.) feel free to give it a shot.
Please read CONTRIBUTING.md before you start contributing.
Credits
The LazyCell library is based originally on work by The Rust Project Developers for the project crates.io.
The list of contributors to this project can be found at CONTRIBUTORS.md.
License
LazyCell is distributed under the terms of both the MIT license and the Apache License (Version 2.0).
See LICENSE-APACHE, and LICENSE-MIT for details.