# Struct bitflags::__core::cell::UnsafeCell [−] [src]

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

1.0.0

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>`

#### `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`

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> !RefUnwindSafe for UnsafeCell<T> where T: ?Sized` 1.9.0

### `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>`

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

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

# Help

## Keyboard Shortcuts

?
  Show this help dialog
S
  Focus the search field
⇤
  Move up in search results
⇥
  Move down in search results
⏎
  Go to active search result

## Search Tricks

Prefix searches with a type followed by a colon (e.g. `fn:`) to restrict the search to a given type.

Accepted types are: `fn`, `mod`, `struct`, `enum`, `trait`, `type`, `macro`, and `const`.

Search functions by type signature (e.g. `vec -> usize` or `* -> vec`)