pub struct ImmutableBorrow<T: ?Sized> { /* private fields */ }
Expand description

A guard for a virtual immutable borrow of the global token of type T.

These can be thought of as Refs to those global tokens except that they have no impact on the runtime and only contribute to AuToken’s static analysis of the binary.

As with borrow_mutably and friends, setting T to Nothing causes this guard to have no effect on the statically-analyzed borrow counts.

Developers wishing to integrate their crate with AuToken will likely use this type to represent the static counterpart to a runtime borrow of some cell of type T as described in the Integrating AuToken section of the crate documentation.

End-users consuming crates with integrations with AuToken, meanwhile, will likely only use these guards for loaned borrows as described by the Making Sense of Control Flow Errors section of the crate documentation.

Implementations§

source§

impl<T: ?Sized> ImmutableBorrow<T>

source

pub const fn new() -> Self

Constructs a new ImmutableBorrow guard.

This function has no runtime cost but will cause the AuToken static analyzer to report potential virtual borrowing issues with other guards.

Internally, this function just calls borrow_immutably with the provided type T.

source

pub fn downgrade(self) -> PotentialImmutableBorrow<T>

Transforms this ImmutableBorrow into a PotentialImmutableBorrow of the same type.

source

pub fn downgrade_ref(&self) -> &PotentialImmutableBorrow<T>

Transforms a reference to ImmutableBorrow into a reference to a PotentialImmutableBorrow of the same type.

source

pub fn downgrade_mut(&mut self) -> &mut PotentialImmutableBorrow<T>

Transforms a mutable reference to ImmutableBorrow into a mutable reference to a PotentialImmutableBorrow of the same type.

source

pub const fn loan(&self) -> ImmutableBorrow<Nothing<'_>>

Creates a loaned ImmutableBorrow of this guard which has no effect on the static analysis borrow counters by itself, making it safe to use in conditional code.

See the Making Sense of Control Flow Errors section of the crate documentation for more details on loans.

source

pub fn strip_lifetime_analysis(self) -> ImmutableBorrow<Nothing<'static>>

Transforms the type of T into Nothing, effectively making it as if this borrow guard no longer exists.

See the Making Sense of Control Flow Errors section of the crate documentation for more details on the utility of strip_lifetime_analysis.

Trait Implementations§

source§

impl<T: ?Sized> Clone for ImmutableBorrow<T>

source§

fn clone(&self) -> Self

Returns a copy of the value. Read more
1.0.0 · source§

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

Performs copy-assignment from source. Read more
source§

impl<T: ?Sized> Debug for ImmutableBorrow<T>

source§

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

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

impl<T: ?Sized> Default for ImmutableBorrow<T>

source§

fn default() -> Self

Returns the “default value” for a type. Read more
source§

impl<T: ?Sized> Drop for ImmutableBorrow<T>

source§

fn drop(&mut self)

Executes the destructor for this type. Read more
source§

impl<T: ?Sized> Ord for ImmutableBorrow<T>

source§

fn cmp(&self, _other: &Self) -> Ordering

This method returns an Ordering between self and other. Read more
1.21.0 · source§

fn max(self, other: Self) -> Self
where Self: Sized,

Compares and returns the maximum of two values. Read more
1.21.0 · source§

fn min(self, other: Self) -> Self
where Self: Sized,

Compares and returns the minimum of two values. Read more
1.50.0 · source§

fn clamp(self, min: Self, max: Self) -> Self
where Self: Sized + PartialOrd,

Restrict a value to a certain interval. Read more
source§

impl<T: ?Sized> PartialEq for ImmutableBorrow<T>

source§

fn eq(&self, _other: &Self) -> bool

This method tests for self and other values to be equal, and is used by ==.
1.0.0 · source§

fn ne(&self, other: &Rhs) -> bool

This method tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
source§

impl<T: ?Sized> PartialOrd for ImmutableBorrow<T>

source§

fn partial_cmp(&self, other: &Self) -> Option<Ordering>

This method returns an ordering between self and other values if one exists. Read more
1.0.0 · source§

fn lt(&self, other: &Rhs) -> bool

This method tests less than (for self and other) and is used by the < operator. Read more
1.0.0 · source§

fn le(&self, other: &Rhs) -> bool

This method tests less than or equal to (for self and other) and is used by the <= operator. Read more
1.0.0 · source§

fn gt(&self, other: &Rhs) -> bool

This method tests greater than (for self and other) and is used by the > operator. Read more
1.0.0 · source§

fn ge(&self, other: &Rhs) -> bool

This method tests greater than or equal to (for self and other) and is used by the >= operator. Read more
source§

impl<T: ?Sized> Eq for ImmutableBorrow<T>

Auto Trait Implementations§

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

§

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

§

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.