Struct netstack3_core::sync::StrongRc
source · pub struct StrongRc<T> { /* private fields */ }
Expand description
A strongly-held reference.
Similar to an alloc::sync::Arc
but holding a Strong
acts as a witness
to the live-ness of the underlying data. That is, holding a Strong
implies
that the underlying data has not yet been destroyed.
Note that Strong
’s implementation of Hash
and PartialEq
operate on
the pointer itself and not the underlying data.
Implementations§
source§impl<T> Strong<T>
impl<T> Strong<T>
sourcepub fn downgrade(_: &Strong<T>) -> Weak<T>
pub fn downgrade(_: &Strong<T>) -> Weak<T>
Returns a weak reference pointing to the same underlying data.
sourcepub fn debug_id(&self) -> impl Debug
pub fn debug_id(&self) -> impl Debug
Returns core::fmt::Debug
implementation that is stable and unique
for the data held behind this Strong
.
sourcepub fn marked_for_destruction(_: &Strong<T>) -> bool
pub fn marked_for_destruction(_: &Strong<T>) -> bool
Returns true if the inner value has since been marked for destruction.
sourcepub fn weak_ptr_eq(_: &Strong<T>, _: &Weak<T>) -> bool
pub fn weak_ptr_eq(_: &Strong<T>, _: &Weak<T>) -> bool
Returns true if the two pointers point to the same allocation.
sourcepub fn ptr_eq(_: &Strong<T>, _: &Strong<T>) -> bool
pub fn ptr_eq(_: &Strong<T>, _: &Strong<T>) -> bool
Returns true if the two pointers point to the same allocation.
sourcepub fn debug_references(this: &Strong<T>) -> DebugReferences<T>
pub fn debug_references(this: &Strong<T>) -> DebugReferences<T>
Creates a DebugReferences
instance.
Trait Implementations§
source§impl<I, D, BT> Borrow<Strong<ReferenceState<I, D, Icmp<BT>>>> for IcmpSocketId<I, D, BT>where
I: IpExt,
D: WeakDeviceIdentifier,
BT: IcmpEchoBindingsTypes,
impl<I, D, BT> Borrow<Strong<ReferenceState<I, D, Icmp<BT>>>> for IcmpSocketId<I, D, BT>where
I: IpExt,
D: WeakDeviceIdentifier,
BT: IcmpEchoBindingsTypes,
source§impl<I, D, BT> Borrow<Strong<ReferenceState<I, D, Udp<BT>>>> for UdpSocketId<I, D, BT>
impl<I, D, BT> Borrow<Strong<ReferenceState<I, D, Udp<BT>>>> for UdpSocketId<I, D, BT>
source§impl<I, D, BT> From<Strong<ReferenceState<I, D, Icmp<BT>>>> for IcmpSocketId<I, D, BT>where
I: IpExt,
D: WeakDeviceIdentifier,
BT: IcmpEchoBindingsTypes,
impl<I, D, BT> From<Strong<ReferenceState<I, D, Icmp<BT>>>> for IcmpSocketId<I, D, BT>where
I: IpExt,
D: WeakDeviceIdentifier,
BT: IcmpEchoBindingsTypes,
source§fn from(value: Strong<ReferenceState<I, D, Icmp<BT>>>) -> IcmpSocketId<I, D, BT>
fn from(value: Strong<ReferenceState<I, D, Icmp<BT>>>) -> IcmpSocketId<I, D, BT>
Converts to this type from the input type.
source§impl<I, D, BT> From<Strong<ReferenceState<I, D, Udp<BT>>>> for UdpSocketId<I, D, BT>
impl<I, D, BT> From<Strong<ReferenceState<I, D, Udp<BT>>>> for UdpSocketId<I, D, BT>
source§fn from(value: Strong<ReferenceState<I, D, Udp<BT>>>) -> UdpSocketId<I, D, BT>
fn from(value: Strong<ReferenceState<I, D, Udp<BT>>>) -> UdpSocketId<I, D, BT>
Converts to this type from the input type.
source§impl<BT> IpAddressId<Ipv4Addr> for Strong<Ipv4AddressEntry<BT>>where
BT: IpDeviceStateBindingsTypes,
impl<BT> IpAddressId<Ipv4Addr> for Strong<Ipv4AddressEntry<BT>>where
BT: IpDeviceStateBindingsTypes,
§type Weak = Weak<Ipv4AddressEntry<BT>>
type Weak = Weak<Ipv4AddressEntry<BT>>
The weak version of this ID.
source§fn downgrade(
&self,
) -> <Strong<Ipv4AddressEntry<BT>> as IpAddressId<Ipv4Addr>>::Weak
fn downgrade( &self, ) -> <Strong<Ipv4AddressEntry<BT>> as IpAddressId<Ipv4Addr>>::Weak
Downgrades this ID to a weak reference.
source§fn addr(&self) -> IpDeviceAddr<Ipv4Addr>
fn addr(&self) -> IpDeviceAddr<Ipv4Addr>
Returns the address this ID represents.
source§fn addr_sub(
&self,
) -> AddrSubnet<Ipv4Addr, NonMulticastAddr<NonMappedAddr<SpecifiedAddr<Ipv4Addr>>>>
fn addr_sub( &self, ) -> AddrSubnet<Ipv4Addr, NonMulticastAddr<NonMappedAddr<SpecifiedAddr<Ipv4Addr>>>>
Returns the address subnet this ID represents.
source§impl<BT> IpAddressId<Ipv6Addr> for Strong<Ipv6AddressEntry<BT>>where
BT: IpDeviceStateBindingsTypes,
impl<BT> IpAddressId<Ipv6Addr> for Strong<Ipv6AddressEntry<BT>>where
BT: IpDeviceStateBindingsTypes,
§type Weak = Weak<Ipv6AddressEntry<BT>>
type Weak = Weak<Ipv6AddressEntry<BT>>
The weak version of this ID.
source§fn downgrade(
&self,
) -> <Strong<Ipv6AddressEntry<BT>> as IpAddressId<Ipv6Addr>>::Weak
fn downgrade( &self, ) -> <Strong<Ipv6AddressEntry<BT>> as IpAddressId<Ipv6Addr>>::Weak
Downgrades this ID to a weak reference.
source§fn addr(&self) -> IpDeviceAddr<Ipv6Addr>
fn addr(&self) -> IpDeviceAddr<Ipv6Addr>
Returns the address this ID represents.
source§fn addr_sub(&self) -> AddrSubnet<Ipv6Addr, NonMappedAddr<UnicastAddr<Ipv6Addr>>>
fn addr_sub(&self) -> AddrSubnet<Ipv6Addr, NonMappedAddr<UnicastAddr<Ipv6Addr>>>
Returns the address subnet this ID represents.
source§impl<T> PartialEq for Strong<T>
impl<T> PartialEq for Strong<T>
impl<T> Eq for Strong<T>
Auto Trait Implementations§
impl<T> Freeze for Strong<T>
impl<T> RefUnwindSafe for Strong<T>where
T: RefUnwindSafe,
impl<T> Send for Strong<T>
impl<T> Sync for Strong<T>
impl<T> Unpin for Strong<T>
impl<T> UnwindSafe for Strong<T>where
T: RefUnwindSafe,
Blanket Implementations§
source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
source§default unsafe fn clone_to_uninit(&self, dst: *mut T)
default unsafe fn clone_to_uninit(&self, dst: *mut T)
🔬This is a nightly-only experimental API. (
clone_to_uninit
)source§impl<CC, BC, Meta> RecvFrameContext<Meta, BC> for CCwhere
Meta: ReceivableFrameMeta<CC, BC>,
impl<CC, BC, Meta> RecvFrameContext<Meta, BC> for CCwhere
Meta: ReceivableFrameMeta<CC, BC>,
source§impl<CC, BC, Meta> SendFrameContext<BC, Meta> for CCwhere
Meta: SendableFrameMeta<CC, BC>,
impl<CC, BC, Meta> SendFrameContext<BC, Meta> for CCwhere
Meta: SendableFrameMeta<CC, BC>,
source§fn send_frame<S>(
&mut self,
bindings_ctx: &mut BC,
metadata: Meta,
frame: S,
) -> Result<(), ErrorAndSerializer<SendFrameErrorReason, S>>where
S: Serializer,
<S as Serializer>::Buffer: BufferMut,
fn send_frame<S>(
&mut self,
bindings_ctx: &mut BC,
metadata: Meta,
frame: S,
) -> Result<(), ErrorAndSerializer<SendFrameErrorReason, S>>where
S: Serializer,
<S as Serializer>::Buffer: BufferMut,
Send a frame. Read more
source§impl<Id, CC, BC> TimerHandler<BC, Id> for CCwhere
BC: TimerBindingsTypes,
Id: HandleableTimer<CC, BC>,
impl<Id, CC, BC> TimerHandler<BC, Id> for CCwhere
BC: TimerBindingsTypes,
Id: HandleableTimer<CC, BC>,
source§fn handle_timer(
&mut self,
bindings_ctx: &mut BC,
dispatch: Id,
timer: <BC as TimerBindingsTypes>::UniqueTimerId,
)
fn handle_timer( &mut self, bindings_ctx: &mut BC, dispatch: Id, timer: <BC as TimerBindingsTypes>::UniqueTimerId, )
Handle a timer firing. Read more
source§impl<L, T> UnlockedAccess<L> for Twhere
L: UnlockedAccessMarkerFor<T>,
impl<L, T> UnlockedAccess<L> for Twhere
L: UnlockedAccessMarkerFor<T>,
§type Data = <L as UnlockedAccessMarkerFor<T>>::Data
type Data = <L as UnlockedAccessMarkerFor<T>>::Data
The type of state being accessed.
§type Guard<'l> = &'l <L as UnlockedAccessMarkerFor<T>>::Data
where
T: 'l
type Guard<'l> = &'l <L as UnlockedAccessMarkerFor<T>>::Data where T: 'l
A guard providing read access to the data.
source§fn access(&self) -> <T as UnlockedAccess<L>>::Guard<'_>
fn access(&self) -> <T as UnlockedAccess<L>>::Guard<'_>
How to access the state.
source§impl<N> UnreachableExt for Nwhere
N: AsRef<Infallible>,
impl<N> UnreachableExt for Nwhere
N: AsRef<Infallible>,
source§fn uninstantiable_unreachable<T>(&self) -> T
fn uninstantiable_unreachable<T>(&self) -> T
A method that can’t be called. Read more