# Struct os::sync::up::UPSafeCell

source · [−]

    pub struct UPSafeCell<T> {
        inner: RefCell<T>,
    }

Expand description

Wrap a static data structure inside it so that we are able to access it without any `unsafe`.

We should only use it in uniprocessor.

In order to get mutable reference of inner data, call `exclusive_access`.

## Fields

`inner: RefCell<T>`

inner data

## Implementations

source

### impl<T> UPSafeCell<T>

source

#### pub unsafe fn new(value: T) -> Self

User is responsible to guarantee that inner struct is only used in uniprocessor.

source

#### pub fn exclusive_access(&self) -> RefMut<'_, T>

Exclusive access inner data in UPSafeCell. Panic if the data has been borrowed.

## Trait Implementations

source

### impl<T> Sync for UPSafeCell<T>

## Auto Trait Implementations

### impl<T> !RefUnwindSafe for UPSafeCell<T>

### impl<T> Send for UPSafeCell<T> where
T: Send,

### impl<T> Unpin for UPSafeCell<T> where
T: Unpin,

### impl<T> UnwindSafe for UPSafeCell<T> where
T: UnwindSafe,

## Blanket Implementations

source

### impl<T> Any for T where
T: 'static + ?Sized,

source

#### fn type_id(&self) -> TypeId

Gets the `TypeId` of `self`. Read more

source

### impl<T> Borrow<T> for T where
T: ?Sized,

const: unstable · source

#### fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more

source

### impl<T> BorrowMut<T> for T where
T: ?Sized,

const: unstable · source

#### fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more

source

### impl<T> From<T> for T

const: unstable · source

#### fn from(t: T) -> T

Returns the argument unchanged.

source

### impl<T, U> Into<U> for T where
U: From<T>,

const: unstable · source

#### fn into(self) -> U

Calls `U::from(self)`.

That is, this conversion is whatever the implementation of `From<T> for U` chooses to do.

source

### impl<T, U> TryFrom<U> for T where
U: Into<T>,

#### type Error = Infallible

The type returned in the event of a conversion error.

const: unstable · source

#### fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.

source

### impl<T, U> TryInto<U> for T where
U: TryFrom<T>,

#### type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.

const: unstable · source

#### fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.