# Struct critical_section::CriticalSection

source ·

    pub struct CriticalSection<'cs> { /* private fields */ }

Expand description

Critical section token.

An instance of this type indicates that the current thread is executing code within a critical section.

## Implementations§

source§

### impl<'cs> CriticalSection<'cs>

source

#### pub unsafe fn new() -> Self

Creates a critical section token.

This method is meant to be used to create safe abstractions rather than being directly used in applications.

##### Safety

This must only be called when the current thread is in a critical section. The caller must ensure that the returned instance will not live beyond the end of the critical section.

The caller must use adequate fences to prevent the compiler from moving the instructions inside the critical section to the outside of it. Sequentially consistent fences are suggested immediately after entry and immediately before exit from the critical section.

Note that the lifetime `'cs` of the returned instance is unconstrained. User code must not be able to influence the lifetime picked for this type, since that might cause it to be inferred to `'static`.

## Trait Implementations§

source§

### impl<'cs> Clone for CriticalSection<'cs>

source§

#### fn clone(&self) -> CriticalSection<'cs>

Returns a copy of the value. Read more
1.0.0§

#### fn clone_from(&mut self, source: &Self)

Performs copy-assignment from `source`. Read more
source§

### impl<'cs> Debug for CriticalSection<'cs>

source§

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

Formats the value using the given formatter. Read more
source§

### impl<'cs> Copy for CriticalSection<'cs>

## Auto Trait Implementations§

§

### impl<'cs> RefUnwindSafe for CriticalSection<'cs>

§

### impl<'cs> Send for CriticalSection<'cs>

§

### impl<'cs> Sync for CriticalSection<'cs>

§

### impl<'cs> Unpin for CriticalSection<'cs>

§

### impl<'cs> UnwindSafe for CriticalSection<'cs>

## Blanket Implementations§

§

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

§

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

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

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

§

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

Immutably borrows from an owned value. Read more
§

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

§

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

Mutably borrows from an owned value. Read more
§

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

§

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

Returns the argument unchanged.

§

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

§

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

Calls `U::from(self)`.

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

§

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

§

#### type Error = Infallible

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

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

Performs the conversion.
§

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

§

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

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

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

Performs the conversion.