Struct CpuLocal

Source
pub struct CpuLocal<T>(Vec<T>);
Expand description

Encapsulates per-CPU value.

T need to implement Send for this type to implement Send and Sync because its value created by one thread then access from another thread.

Use RefCell if you need interior mutability but it will make that value not safe to access from any interrupt handler. You can’t use mutex here because once the thread is pinned it cannot go to sleep.

Tuple Fields§

§0: Vec<T>

Implementations§

Source§

impl<T> CpuLocal<T>

Source

pub fn new(f: impl FnMut(usize) -> T) -> Self

Source

pub fn lock(&self) -> CpuLock<'_, T>

The calling thread cannot go to sleep until the returned CpuLock is dropped. Attempt to call any function that can put the thread to sleep will be panic.

Trait Implementations§

Source§

impl<T: Send> Send for CpuLocal<T>

Source§

impl<T: Send> Sync for CpuLocal<T>

Auto Trait Implementations§

§

impl<T> Freeze for CpuLocal<T>

§

impl<T> RefUnwindSafe for CpuLocal<T>
where T: RefUnwindSafe,

§

impl<T> Unpin for CpuLocal<T>
where T: Unpin,

§

impl<T> UnwindSafe for CpuLocal<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,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

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

Source§

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

Mutably borrows from an owned value. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

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

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

Source§

type Error = Infallible

The type returned in the event of a conversion error.
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>,

Source§

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

The type returned in the event of a conversion error.
Source§

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

Performs the conversion.