3 unstable releases
0.2.0 | Jan 30, 2022 |
---|---|
0.1.1 | Oct 9, 2018 |
0.1.0 | Oct 9, 2018 |
#181 in Memory management
1,462 downloads per month
Used in 11 crates
(5 directly)
11KB
112 lines
PinCell
This library defines the PinCell
type, a pinning variant of the standard
library's RefCell
.
It is not safe to "pin project" through a RefCell
- getting a pinned
reference to something inside the RefCell
when you have a pinned
refernece to the RefCell
- because RefCell
is too powerful.
A PinCell
is slightly less powerful than RefCell
: unlike a RefCell
,
one cannot get a mutable reference into a PinCell
, only a pinned mutable
reference (Pin<&mut T>
). This makes pin projection safe, allowing you
to use interior mutability with the knowledge that T
will never actually
be moved out of the RefCell
that wraps it.
License
Licensed under MIT license.
lib.rs
:
This library defines the PinCell
type, a pinning variant of the standard
library's RefCell
.
It is not safe to "pin project" through a RefCell
- getting a pinned
reference to something inside the RefCell
when you have a pinned
refernece to the RefCell
- because RefCell
is too powerful.
A PinCell
is slightly less powerful than RefCell
: unlike a RefCell
,
one cannot get a mutable reference into a PinCell
, only a pinned mutable
reference (Pin<&mut T>
). This makes pin projection safe, allowing you
to use interior mutability with the knowledge that T
will never actually
be moved out of the RefCell
that wraps it.