Slot

Struct Slot 

Source
pub struct Slot<T: ?Sized>(/* private fields */);
Expand description

Wraps a mutable borrow for storage in LaneContext.

This erases the lifetime so the value can be stored in the type-map. The caller must ensure the Slot does not outlive the original reference (guaranteed by the stack-scoped context pattern).

use khora_core::lane::Slot;

let mut encoder: Box<dyn CommandEncoder> = /* ... */;
let slot = Slot::new(encoder.as_mut());
// slot.get() -> &mut dyn CommandEncoder

Implementations§

Source§

impl<T: ?Sized> Slot<T>

Source

pub fn new(value: &mut T) -> Self

Creates a Slot from a mutable reference.

Source

pub unsafe fn from_raw(ptr: *mut T) -> Self

Creates a Slot from a raw pointer.

§Safety

The caller must ensure:

  • The pointer is valid and properly aligned.
  • The pointed-to data outlives every use of this Slot.
  • No other mutable reference to the data exists while the Slot is live.
Source

pub fn get(&self) -> &mut T

Returns a mutable reference to the wrapped value.

§Safety contract

Safe when called within the scope where the original reference is still alive and no other reference to the same data exists.

Source

pub fn get_ref(&self) -> &T

Returns a shared reference to the wrapped value.

Trait Implementations§

Source§

impl<T: ?Sized> Send for Slot<T>

Source§

impl<T: ?Sized> Sync for Slot<T>

Auto Trait Implementations§

§

impl<T> Freeze for Slot<T>
where T: ?Sized,

§

impl<T> RefUnwindSafe for Slot<T>
where T: RefUnwindSafe + ?Sized,

§

impl<T> Unpin for Slot<T>
where T: ?Sized,

§

impl<T> UnwindSafe for Slot<T>
where T: RefUnwindSafe + ?Sized,

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> AsAny for T
where T: Any,

Source§

fn as_any(&self) -> &(dyn Any + 'static)

Returns a reference to the inner value as &dyn Any.
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.