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 Ref
s 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>
impl<T: ?Sized> ImmutableBorrow<T>
Sourcepub const fn new() -> Self
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
.
Sourcepub fn downgrade(self) -> PotentialImmutableBorrow<T>
pub fn downgrade(self) -> PotentialImmutableBorrow<T>
Transforms this ImmutableBorrow
into a PotentialImmutableBorrow
of the same type.
Sourcepub fn downgrade_ref(&self) -> &PotentialImmutableBorrow<T>
pub fn downgrade_ref(&self) -> &PotentialImmutableBorrow<T>
Transforms a reference to ImmutableBorrow
into a reference to a PotentialImmutableBorrow
of the same type.
Sourcepub fn downgrade_mut(&mut self) -> &mut PotentialImmutableBorrow<T>
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.
Sourcepub const fn loan(&self) -> ImmutableBorrow<Nothing<'_>>
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.
Sourcepub fn strip_lifetime_analysis(self) -> ImmutableBorrow<Nothing<'static>>
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
.