Struct std::cell::UnsafeCell
[−]
[src]
pub struct UnsafeCell<T> where T: ?Sized {
value: T,
}
The core primitive for interior mutability in Rust.
UnsafeCell<T>
is a type that wraps some T
and indicates unsafe interior operations on the
wrapped type. Types with an UnsafeCell<T>
field are considered to have an 'unsafe interior'.
The UnsafeCell<T>
type is the only legal way to obtain aliasable data that is considered
mutable. In general, transmuting an &T
type into an &mut T
is considered undefined behavior.
Types like Cell<T>
and RefCell<T>
use this type to wrap their internal data.
Examples
use std::cell::UnsafeCell; use std::marker::Sync; struct NotThreadSafe<T> { value: UnsafeCell<T>, } unsafe impl<T> Sync for NotThreadSafe<T> {}
Fields
value |
Methods
impl<T> UnsafeCell<T>
const fn new(value: T) -> UnsafeCell<T>
Constructs a new instance of UnsafeCell
which will wrap the specified
value.
All access to the inner value through methods is unsafe
.
Examples
use std::cell::UnsafeCell; let uc = UnsafeCell::new(5);
unsafe fn into_inner(self) -> T
impl<T> UnsafeCell<T> where T: ?Sized
fn get(&self) -> *mut T
Gets a mutable pointer to the wrapped value.
Examples
use std::cell::UnsafeCell; let uc = UnsafeCell::new(5); let five = uc.get();