9 stable releases
1.5.0 | Mar 29, 2023 |
---|---|
1.4.2 | Jan 18, 2023 |
1.3.0 | Nov 8, 2022 |
1.1.0 | Sep 10, 2021 |
1.0.0 | Aug 27, 2021 |
#98 in Memory management
58,510 downloads per month
Used in 69 crates
(via zenoh-keyexpr)
20KB
456 lines
This library provides an alternative to ghost-cell
which uses concrete types instead of lifetimes for branding.
This allows a more convenient usage, where cells and tokens can be constructed independently, with the same compile-time guarantees as ghost-cell
. The trade-off for this arguably more convenient usage and arguably easier to understand branding method is that tokens, while zero-sized if made correctly, must be guaranteed to be constructable only if no other instance exists.
To this end, this crate provides the generate_token
macro, which will create a ZST which can only be constructed using TokenTrait::new
.
lib.rs
:
This library provides an alternative to ghost-cell
which uses concrete types instead of lifetimes for branding.
This allows a more convenient usage, where cells and tokens can be constructed independently, with the same compile-time guarantees as ghost-cell
. The trade-off for this arguably more convenient usage and arguably easier to understand branding method is that tokens, while zero-sized if made correctly, must be guaranteed to be constructable only if no other instance exists.
To this end, this crate provides the generate_token
macro, which will create a ZST which can only be constructed using TokenTrait::aquire
, which is generated to guarantee no other token exists before returning the token. This is done by checking a static AtomicBool
flag, which is the only runtime cost of these tokens.