Skip to main content

DevresLt

Struct DevresLt 

Source
pub struct DevresLt<F: ForLt>(/* private fields */)
where
    for<'a> F::Of<'a>: Send;
Expand description

Device-managed resource with ForLt-aware access.

DevresLt wraps Devres and shortens the stored 'static lifetime to the caller’s borrow lifetime in all access methods.

Types that implement CovariantForLt get direct-reference accessors (Self::access, Self::try_access). Plain ForLt types use closure-based accessors (Self::access_with, Self::try_access_with).

Implementations§

Source§

impl<F: ForLt> DevresLt<F>
where for<'a> F::Of<'a>: Send,

Source

pub unsafe fn new<'a, E>( dev: &'a Device<Bound>, data: impl PinInit<F::Of<'a>, E>, ) -> Result<Self>
where Error: From<E>,

Creates a new DevresLt instance of the given data.

§Safety

The data must remain valid for the device’s full bound scope. DevresLt allows access until the device is unbound, which may outlast 'a.

Source

pub fn device(&self) -> &Device

Return a reference of the Device this DevresLt instance has been created with.

Source

pub fn access_with<R, G>(&self, dev: &Device<Bound>, f: G) -> Result<R>
where G: for<'a> FnOnce(&F::Of<'a>) -> R,

Obtain &F::Of<'_>, bypassing the Revocable, through a closure.

This method works like DevresLt::access but accepts any ForLt type, not just CovariantForLt.

Source

pub fn try_access_with<R, G>(&self, f: G) -> Option<R>
where G: for<'a> FnOnce(&F::Of<'a>) -> R,

Source§

impl<F: CovariantForLt> DevresLt<F>
where for<'a> F::Of<'a>: Send,

Source

pub fn access<'a>(&'a self, dev: &'a Device<Bound>) -> Result<&'a F::Of<'a>>

Obtain &'a F::Of<'a>, bypassing the Revocable.

This method works like Devres::access, but shortens the returned reference’s lifetime from 'static to 'a via CovariantForLt::cast_ref.

Source

pub fn try_access(&self) -> Option<DevresGuard<'_, F>>

Auto Trait Implementations§

§

impl<F> !RefUnwindSafe for DevresLt<F>

§

impl<F> !UnwindSafe for DevresLt<F>

§

impl<F> Freeze for DevresLt<F>

§

impl<F> Send for DevresLt<F>

§

impl<F> Sync for DevresLt<F>
where <F as ForLt>::Of<'static>: Sync,

§

impl<F> Unpin for DevresLt<F>

§

impl<F> UnsafeUnpin for DevresLt<F>

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
§

impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
where ST: ?Sized, DT: ?Sized,

§

impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
where ST: ?Sized, DT: ?Sized,

Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T> Init<T> for T

Source§

unsafe fn __init(self, slot: *mut T) -> Result<(), Infallible>

Initializes slot. Read more
Source§

fn chain<F>(self, f: F) -> ChainInit<Self, F, T, E>
where F: FnOnce(&mut T) -> Result<(), E>,

First initializes the value using self then calls the function f with the initialized value. Read more
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> KnownSize for T

Source§

const MIN_SIZE: usize = const MIN_SIZE: usize = size_of::<T>();

Minimum size of this type known at compile-time.
Source§

const MIN_ALIGN: Alignment = const MIN_ALIGN: Alignment = Alignment::of::<T>();

Minimum alignment of this type known at compile-time.
Source§

fn size(_: *const T) -> usize

Get the size of an object of this type in bytes, with the metadata of the given pointer.
Source§

impl<T> PinInit<T> for T

Source§

unsafe fn __pinned_init(self, slot: *mut T) -> Result<(), Infallible>

Initializes slot. Read more
Source§

fn pin_chain<F>(self, f: F) -> ChainPinInit<Self, F, T, E>
where F: FnOnce(Pin<&mut T>) -> Result<(), E>,

First initializes the value using self then calls the function f with the initialized value. Read more
§

impl<T> Read<Exclusive, BecauseExclusive> for T
where T: ?Sized,

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.
Source§

impl<T, U, const N: u32> TryIntoBounded<T, N> for U
where T: Integer, U: TryInto<T>,

Source§

fn try_into_bounded(self) -> Option<Bounded<T, N>>

Attempts to convert self into a Bounded using N bits. Read more