pub struct DualStackTuple<I: DualStackIpExt, T: GenericOverIp<I> + GenericOverIp<I::OtherVersion>> { /* private fields */ }
Expand description
A tuple of values for T
for both I
and I::OtherVersion
.
Implementations§
Source§impl<I: DualStackIpExt, T: GenericOverIp<I> + GenericOverIp<I::OtherVersion>> DualStackTuple<I, T>
impl<I: DualStackIpExt, T: GenericOverIp<I> + GenericOverIp<I::OtherVersion>> DualStackTuple<I, T>
Sourcepub fn new(
this_stack: T,
other_stack: <T as GenericOverIp<I::OtherVersion>>::Type,
) -> Selfwhere
T: GenericOverIp<I, Type = T>,
pub fn new(
this_stack: T,
other_stack: <T as GenericOverIp<I::OtherVersion>>::Type,
) -> Selfwhere
T: GenericOverIp<I, Type = T>,
Creates a new tuple with this_stack
and other_stack
values.
Sourcepub fn into_inner(
self,
) -> (<T as GenericOverIp<I>>::Type, <T as GenericOverIp<I::OtherVersion>>::Type)
pub fn into_inner( self, ) -> (<T as GenericOverIp<I>>::Type, <T as GenericOverIp<I::OtherVersion>>::Type)
Retrieves (this_stack, other_stack)
from the tuple.
Sourcepub fn into_this_stack(self) -> <T as GenericOverIp<I>>::Type
pub fn into_this_stack(self) -> <T as GenericOverIp<I>>::Type
Retrieves this_stack
from the tuple.
Sourcepub fn this_stack(&self) -> &<T as GenericOverIp<I>>::Type
pub fn this_stack(&self) -> &<T as GenericOverIp<I>>::Type
Borrows this_stack
from the tuple.
Sourcepub fn into_other_stack(self) -> <T as GenericOverIp<I::OtherVersion>>::Type
pub fn into_other_stack(self) -> <T as GenericOverIp<I::OtherVersion>>::Type
Retrieves other_stack
from the tuple.
Sourcepub fn other_stack(&self) -> &<T as GenericOverIp<I::OtherVersion>>::Type
pub fn other_stack(&self) -> &<T as GenericOverIp<I::OtherVersion>>::Type
Borrows other_stack
from the tuple.
Sourcepub fn flip(self) -> DualStackTuple<I::OtherVersion, T>
pub fn flip(self) -> DualStackTuple<I::OtherVersion, T>
Flips the types, making this_stack
other_stack
and vice-versa.
Sourcepub fn cast<X>(self) -> DualStackTuple<X, T>where
X: DualStackIpExt,
T: GenericOverIp<X> + GenericOverIp<X::OtherVersion> + GenericOverIp<Ipv4> + GenericOverIp<Ipv6>,
pub fn cast<X>(self) -> DualStackTuple<X, T>where
X: DualStackIpExt,
T: GenericOverIp<X> + GenericOverIp<X::OtherVersion> + GenericOverIp<Ipv4> + GenericOverIp<Ipv6>,
Casts to IP version X
.
Given DualStackTuple
contains complete information for both IP
versions, it can be easily cast into an arbitrary X
IP version.
This can be used to tie together type parameters when dealing with dual
stack sockets. For example, a DualStackTuple
defined for SockI
can
be cast to any WireI
.
Trait Implementations§
Source§impl<I: DualStackIpExt, NewIp: DualStackIpExt, T: GenericOverIp<NewIp> + GenericOverIp<NewIp::OtherVersion> + GenericOverIp<I> + GenericOverIp<I::OtherVersion>> GenericOverIp<NewIp> for DualStackTuple<I, T>
impl<I: DualStackIpExt, NewIp: DualStackIpExt, T: GenericOverIp<NewIp> + GenericOverIp<NewIp::OtherVersion> + GenericOverIp<I> + GenericOverIp<I::OtherVersion>> GenericOverIp<NewIp> for DualStackTuple<I, T>
Source§type Type = DualStackTuple<NewIp, T>
type Type = DualStackTuple<NewIp, T>
The type of
Self
when its IP-generic parameter is replaced with the
type NewIp
.Auto Trait Implementations§
impl<I, T> Freeze for DualStackTuple<I, T>where
<T as GenericOverIp<I>>::Type: Freeze,
<T as GenericOverIp<<I as DualStackIpExt>::OtherVersion>>::Type: Freeze,
impl<I, T> RefUnwindSafe for DualStackTuple<I, T>where
<T as GenericOverIp<I>>::Type: RefUnwindSafe,
<T as GenericOverIp<<I as DualStackIpExt>::OtherVersion>>::Type: RefUnwindSafe,
I: RefUnwindSafe,
impl<I, T> Send for DualStackTuple<I, T>where
<T as GenericOverIp<I>>::Type: Send,
<T as GenericOverIp<<I as DualStackIpExt>::OtherVersion>>::Type: Send,
impl<I, T> Sync for DualStackTuple<I, T>where
<T as GenericOverIp<I>>::Type: Sync,
<T as GenericOverIp<<I as DualStackIpExt>::OtherVersion>>::Type: Sync,
impl<I, T> Unpin for DualStackTuple<I, T>where
<T as GenericOverIp<I>>::Type: Unpin,
<T as GenericOverIp<<I as DualStackIpExt>::OtherVersion>>::Type: Unpin,
I: Unpin,
impl<I, T> UnwindSafe for DualStackTuple<I, T>where
<T as GenericOverIp<I>>::Type: UnwindSafe,
<T as GenericOverIp<<I as DualStackIpExt>::OtherVersion>>::Type: UnwindSafe,
I: UnwindSafe,
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<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