Struct bitflags::__core::cell::UnsafeCell1.0.0 [] [src]

pub struct UnsafeCell<T> where T: ?Sized {
    // some fields omitted
}

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> {}

Methods

impl<T> UnsafeCell<T>

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

Unwraps the value.

Safety

This function is unsafe because this thread or another thread may currently be inspecting the inner value.

Examples

use std::cell::UnsafeCell;

let uc = UnsafeCell::new(5);

let five = unsafe { uc.into_inner() };

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

Trait Implementations

impl<T> !Sync for UnsafeCell<T> where T: ?Sized

impl<T> Default for UnsafeCell<T> where T: Default
1.9.0

fn default() -> UnsafeCell<T>

Returns the "default value" for a type. Read more

impl<T> Debug for UnsafeCell<T> where T: Debug + ?Sized
1.9.0

fn fmt(&self, f: &mut Formatter) -> Result<(), Error>

Formats the value using the given formatter.