Struct net_types::MulticastAddr

source ·
pub struct MulticastAddr<A>(/* private fields */);
Expand description

An address which is guaranteed to be multicast.

MulticastAddr wraps an address of type A and guarantees that it is a multicast address. Note that this guarantee is contingent on a correct implementation of the MulticastAddress trait. Since that trait is not unsafe, unsafe code may NOT rely on this guarantee for its soundness.

Implementations§

source§

impl<A: MulticastAddress> MulticastAddr<A>

source

pub fn new(addr: A) -> Option<MulticastAddr<A>>

Constructs a new MulticastAddr.

new returns None if !addr.is_multicast().

source

pub fn from_witness<W: Witness<A>>(addr: W) -> Option<MulticastAddr<A>>

Constructs a new MulticastAddr from a witness type.

from_witness(witness) is equivalent to new(witness.into_addr()).

source§

impl<A> MulticastAddr<A>

source

pub const unsafe fn new_unchecked(addr: A) -> MulticastAddr<A>

Constructs a new MulticastAddr without checking to see if addr is actually multicast.

§Safety

It is up to the caller to make sure that addr is multicast to avoid breaking the guarantees of MulticastAddr. See MulticastAddr for more details.

source§

impl<A: MulticastAddress + SpecifiedAddress> MulticastAddr<A>

source

pub fn into_specified(self) -> SpecifiedAddr<A>

Converts this MulticastAddr into a SpecifiedAddr.

MulticastAddress::is_multicast implies SpecifiedAddress::is_specified, so all MulticastAddrs are guaranteed to be specified, so this conversion is infallible.

source§

impl<A: MulticastAddress + MappedAddress> MulticastAddr<A>

source

pub fn non_mapped(self) -> NonMappedAddr<MulticastAddr<A>>

Wraps self in the NonMappedAddr witness type.

Trait Implementations§

source§

impl<A: MulticastAddress> AsRef<A> for MulticastAddr<A>

source§

fn as_ref(&self) -> &A

Converts this type into a shared reference of the (usually inferred) input type.
source§

impl<A: MulticastAddress + LinkLocalAddress> AsRef<A> for MulticastAddr<LinkLocalAddr<A>>

source§

fn as_ref(&self) -> &A

Converts this type into a shared reference of the (usually inferred) input type.
source§

impl<A: MulticastAddress + MappedAddress> AsRef<A> for MulticastAddr<NonMappedAddr<A>>

source§

fn as_ref(&self) -> &A

Converts this type into a shared reference of the (usually inferred) input type.
source§

impl<A: MulticastAddress> AsRef<MulticastAddr<A>> for MulticastAddr<A>

source§

fn as_ref(&self) -> &MulticastAddr<A>

Converts this type into a shared reference of the (usually inferred) input type.
source§

impl<A: BroadcastAddress> BroadcastAddress for MulticastAddr<A>

source§

fn is_broadcast(&self) -> bool

Is this a broadcast address? Read more
source§

impl<A: Clone> Clone for MulticastAddr<A>

source§

fn clone(&self) -> MulticastAddr<A>

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<A: Debug> Debug for MulticastAddr<A>

source§

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

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

impl<A: MulticastAddress> Deref for MulticastAddr<A>

§

type Target = A

The resulting type after dereferencing.
source§

fn deref(&self) -> &A

Dereferences the value.
source§

impl<A: Display> Display for MulticastAddr<A>

source§

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

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

impl<'a, A: IpAddress> From<&'a MulticastAddr<A>> for Mac

source§

fn from(addr: &'a MulticastAddr<A>) -> Mac

Converts a multicast IP address to a MAC address.

This method is equivalent to MulticastAddr::<Mac>::from(addr).get().

source§

impl<'a, A: IpAddress> From<&'a MulticastAddr<A>> for MulticastAddr<Mac>

source§

fn from(addr: &'a MulticastAddr<A>) -> MulticastAddr<Mac>

Converts a multicast IP address to a multicast MAC address.

When a multicast IP packet is sent over an Ethernet link, the frame’s destination MAC address is a multicast MAC address that is derived from the destination IP address. This function performs that conversion.

See RFC 7042 Section 2.1.1 and Section 2.3.1 for details on how IPv4 and IPv6 addresses are mapped, respectively.

source§

impl From<IpAddr<MulticastAddr<Ipv4Addr>, MulticastAddr<Ipv6Addr>>> for MulticastAddr<IpAddr>

source§

fn from( addr: IpAddr<MulticastAddr<Ipv4Addr>, MulticastAddr<Ipv6Addr>>, ) -> MulticastAddr<IpAddr>

Converts to this type from the input type.
source§

impl<A: IpAddress> From<MulticastAddr<A>> for IpAddr<MulticastAddr<Ipv4Addr>, MulticastAddr<Ipv6Addr>>

source§

fn from( addr: MulticastAddr<A>, ) -> IpAddr<MulticastAddr<Ipv4Addr>, MulticastAddr<Ipv6Addr>>

Converts to this type from the input type.
source§

impl<A: Into<Ipv4Addr> + MulticastAddress + Copy> From<MulticastAddr<A>> for Ipv4Addr

source§

fn from(addr: MulticastAddr<A>) -> Ipv4Addr

Converts to this type from the input type.
source§

impl<A: Into<Ipv6Addr> + MulticastAddress + Copy> From<MulticastAddr<A>> for Ipv6Addr

source§

fn from(addr: MulticastAddr<A>) -> Ipv6Addr

Converts to this type from the input type.
source§

impl<A: IpAddress> From<MulticastAddr<A>> for Mac

source§

fn from(addr: MulticastAddr<A>) -> Mac

Converts a multicast IP address to a MAC address.

This method is equivalent to (&addr).into().

source§

impl<A: IpAddress> From<MulticastAddr<A>> for MulticastAddr<IpAddr>

source§

fn from(addr: MulticastAddr<A>) -> MulticastAddr<IpAddr>

Converts to this type from the input type.
source§

impl<A: IpAddress> From<MulticastAddr<A>> for MulticastAddr<Mac>

source§

fn from(addr: MulticastAddr<A>) -> MulticastAddr<Mac>

Converts to this type from the input type.
source§

impl<A: MulticastAddress + SpecifiedAddress> From<MulticastAddr<A>> for SpecifiedAddr<A>

source§

fn from(addr: MulticastAddr<A>) -> SpecifiedAddr<A>

Converts to this type from the input type.
source§

impl From<MulticastAddr<IpAddr>> for IpAddr<MulticastAddr<Ipv4Addr>, MulticastAddr<Ipv6Addr>>

source§

fn from( addr: MulticastAddr<IpAddr>, ) -> IpAddr<MulticastAddr<Ipv4Addr>, MulticastAddr<Ipv6Addr>>

Converts to this type from the input type.
source§

impl From<MulticastAddr<Ipv6Addr>> for UnicastOrMulticastIpv6Addr

source§

fn from(addr: MulticastAddr<Ipv6Addr>) -> UnicastOrMulticastIpv6Addr

Converts to this type from the input type.
source§

impl<A: MulticastAddress + LinkLocalAddress + SpecifiedAddress> From<MulticastAddr<LinkLocalAddr<A>>> for SpecifiedAddr<A>

source§

fn from(addr: MulticastAddr<LinkLocalAddr<A>>) -> SpecifiedAddr<A>

Converts to this type from the input type.
source§

impl From<MulticastAddr<Mac>> for Mac

source§

fn from(addr: MulticastAddr<Mac>) -> Mac

Converts to this type from the input type.
source§

impl<A: MulticastAddress + MappedAddress + SpecifiedAddress> From<MulticastAddr<NonMappedAddr<A>>> for SpecifiedAddr<A>

source§

fn from(addr: MulticastAddr<NonMappedAddr<A>>) -> SpecifiedAddr<A>

Converts to this type from the input type.
source§

impl<A: IpAddress, I: Ip> GenericOverIp<I> for MulticastAddr<A>

§

type Type = MulticastAddr<<I as Ip>::Addr>

The type of Self when its IP-generic parameter is replaced with the type NewIp.
source§

impl<A: Hash> Hash for MulticastAddr<A>

source§

fn hash<__H: Hasher>(&self, state: &mut __H)

Feeds this value into the given Hasher. Read more
1.3.0 · source§

fn hash_slice<H>(data: &[Self], state: &mut H)
where H: Hasher, Self: Sized,

Feeds a slice of this type into the given Hasher. Read more
source§

impl IpAddrWitness for MulticastAddr<IpAddr>

§

type V4 = MulticastAddr<Ipv4Addr>

The IPv4-specific version of Self. Read more
§

type V6 = MulticastAddr<Ipv6Addr>

The IPv6-specific version of Self. Read more
source§

fn from_v4(addr: Self::V4) -> Self

Converts an IPv4-specific witness into a general witness.
source§

fn from_v6(addr: Self::V6) -> Self

Converts an IPv6-specific witness into a general witness.
source§

impl<A: IpAddress> IpAddressWitness<A> for MulticastAddr<A>

§

type IpAddrWitness = MulticastAddr<IpAddr>

The type-erased version of Self. Read more
source§

impl<A: LinkLocalAddress> LinkLocalAddress for MulticastAddr<A>

Is this a link-local address? Read more
source§

impl<A: MappedAddress> MappedAddress for MulticastAddr<A>

source§

fn is_non_mapped(&self) -> bool

Is this a non-mapped address?
source§

impl<A: Ord> Ord for MulticastAddr<A>

source§

fn cmp(&self, other: &MulticastAddr<A>) -> 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<A: PartialEq> PartialEq for MulticastAddr<A>

source§

fn eq(&self, other: &MulticastAddr<A>) -> 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<A: PartialOrd> PartialOrd for MulticastAddr<A>

source§

fn partial_cmp(&self, other: &MulticastAddr<A>) -> 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<A: ScopeableAddress> ScopeableAddress for MulticastAddr<A>

§

type Scope = <A as ScopeableAddress>::Scope

The type of all non-global scopes.
source§

fn scope(&self) -> Self::Scope

The scope of this address. Read more
source§

impl<A: SpecifiedAddress> SpecifiedAddress for MulticastAddr<A>

source§

fn is_specified(&self) -> bool

Is this a specified address? Read more
source§

impl<A: MulticastAddress> TransposableWitness<A> for MulticastAddr<A>

§

type Map<T> = MulticastAddr<T>

Maps the type wrapped by this witness.
source§

impl<A: BroadcastAddress + MulticastAddress> TryFrom<BroadcastAddr<A>> for MulticastAddr<A>

§

type Error = ()

The type returned in the event of a conversion error.
source§

fn try_from(addr: BroadcastAddr<A>) -> Result<MulticastAddr<A>, ()>

Performs the conversion.
source§

impl TryFrom<Ipv4Addr> for MulticastAddr<Ipv4Addr>

§

type Error = ()

The type returned in the event of a conversion error.
source§

fn try_from(addr: Ipv4Addr) -> Result<MulticastAddr<Ipv4Addr>, ()>

Performs the conversion.
source§

impl TryFrom<Ipv6Addr> for MulticastAddr<Ipv6Addr>

§

type Error = ()

The type returned in the event of a conversion error.
source§

fn try_from(addr: Ipv6Addr) -> Result<MulticastAddr<Ipv6Addr>, ()>

Performs the conversion.
source§

impl<A: LinkLocalAddress + MulticastAddress> TryFrom<LinkLocalAddr<A>> for MulticastAddr<A>

§

type Error = ()

The type returned in the event of a conversion error.
source§

fn try_from(addr: LinkLocalAddr<A>) -> Result<MulticastAddr<A>, ()>

Performs the conversion.
source§

impl<A: LinkLocalBroadcastAddress + MulticastAddress> TryFrom<LinkLocalAddr<BroadcastAddr<A>>> for MulticastAddr<A>

§

type Error = ()

The type returned in the event of a conversion error.
source§

fn try_from(addr: LinkLocalBroadcastAddr<A>) -> Result<MulticastAddr<A>, ()>

Performs the conversion.
source§

impl<A: LinkLocalMulticastAddress + MulticastAddress> TryFrom<LinkLocalAddr<MulticastAddr<A>>> for MulticastAddr<A>

§

type Error = ()

The type returned in the event of a conversion error.
source§

fn try_from(addr: LinkLocalMulticastAddr<A>) -> Result<MulticastAddr<A>, ()>

Performs the conversion.
source§

impl<A: LinkLocalUnicastAddress + MulticastAddress> TryFrom<LinkLocalAddr<UnicastAddr<A>>> for MulticastAddr<A>

§

type Error = ()

The type returned in the event of a conversion error.
source§

fn try_from(addr: LinkLocalUnicastAddr<A>) -> Result<MulticastAddr<A>, ()>

Performs the conversion.
source§

impl<A: MulticastAddress + BroadcastAddress> TryFrom<MulticastAddr<A>> for BroadcastAddr<A>

§

type Error = ()

The type returned in the event of a conversion error.
source§

fn try_from(addr: MulticastAddr<A>) -> Result<BroadcastAddr<A>, ()>

Performs the conversion.
source§

impl<A: MulticastAddress + LinkLocalAddress> TryFrom<MulticastAddr<A>> for LinkLocalAddr<A>

§

type Error = ()

The type returned in the event of a conversion error.
source§

fn try_from(addr: MulticastAddr<A>) -> Result<LinkLocalAddr<A>, ()>

Performs the conversion.
source§

impl<A: MulticastAddress + LinkLocalBroadcastAddress> TryFrom<MulticastAddr<A>> for LinkLocalBroadcastAddr<A>

§

type Error = ()

The type returned in the event of a conversion error.
source§

fn try_from(addr: MulticastAddr<A>) -> Result<LinkLocalBroadcastAddr<A>, ()>

Performs the conversion.
source§

impl<A: MulticastAddress + LinkLocalUnicastAddress> TryFrom<MulticastAddr<A>> for LinkLocalUnicastAddr<A>

§

type Error = ()

The type returned in the event of a conversion error.
source§

fn try_from(addr: MulticastAddr<A>) -> Result<LinkLocalUnicastAddr<A>, ()>

Performs the conversion.
source§

impl<A: MulticastAddress + MappedAddress> TryFrom<MulticastAddr<A>> for NonMappedAddr<A>

§

type Error = ()

The type returned in the event of a conversion error.
source§

fn try_from(addr: MulticastAddr<A>) -> Result<NonMappedAddr<A>, ()>

Performs the conversion.
source§

impl<A: MulticastAddress + UnicastAddress> TryFrom<MulticastAddr<A>> for UnicastAddr<A>

§

type Error = ()

The type returned in the event of a conversion error.
source§

fn try_from(addr: MulticastAddr<A>) -> Result<UnicastAddr<A>, ()>

Performs the conversion.
source§

impl<A: MappedAddress + MulticastAddress> TryFrom<NonMappedAddr<A>> for MulticastAddr<A>

§

type Error = ()

The type returned in the event of a conversion error.
source§

fn try_from(addr: NonMappedAddr<A>) -> Result<MulticastAddr<A>, ()>

Performs the conversion.
source§

impl<A: SpecifiedAddress + MulticastAddress> TryFrom<SpecifiedAddr<A>> for MulticastAddr<A>

§

type Error = ()

The type returned in the event of a conversion error.
source§

fn try_from(addr: SpecifiedAddr<A>) -> Result<MulticastAddr<A>, ()>

Performs the conversion.
source§

impl<A: UnicastAddress + MulticastAddress> TryFrom<UnicastAddr<A>> for MulticastAddr<A>

§

type Error = ()

The type returned in the event of a conversion error.
source§

fn try_from(addr: UnicastAddr<A>) -> Result<MulticastAddr<A>, ()>

Performs the conversion.
source§

impl<A: UnicastAddress> UnicastAddress for MulticastAddr<A>

source§

fn is_unicast(&self) -> bool

Is this a unicast address? Read more
source§

impl<A: MulticastAddress> Witness<A> for MulticastAddr<A>

source§

fn new(addr: A) -> Option<MulticastAddr<A>>

Constructs a new witness type. Read more
source§

unsafe fn new_unchecked(addr: A) -> MulticastAddr<A>

Constructs a new witness type without checking to see if addr actually satisfies the required property. Read more
source§

fn into_addr(self) -> A

Consumes this witness and returns the contained A. Read more
source§

fn from_witness<W: Witness<A>>(addr: W) -> Option<Self>

Constructs a new witness type from an existing witness type. Read more
source§

fn transpose<T>(self) -> A::Map<Self::Map<T>>
where Self: TransposableWitness<A>, A: TransposableWitness<T>, Self::Map<T>: Witness<T>, A::Map<Self::Map<T>>: Witness<Self::Map<T>>,

Transposes this witness type with another witness type layered inside of it. (e.g. UnicastAddr<SpecifiedAddr> -> SpecifiedAddr<UnicastAddr>)
source§

impl<A: MulticastAddress + LinkLocalAddress> Witness<A> for MulticastAddr<LinkLocalAddr<A>>

source§

fn new(addr: A) -> Option<MulticastAddr<LinkLocalAddr<A>>>

Constructs a new witness type. Read more
source§

unsafe fn new_unchecked(addr: A) -> MulticastAddr<LinkLocalAddr<A>>

Constructs a new witness type without checking to see if addr actually satisfies the required property. Read more
source§

fn into_addr(self) -> A

Consumes this witness and returns the contained A. Read more
source§

fn from_witness<W: Witness<A>>(addr: W) -> Option<Self>

Constructs a new witness type from an existing witness type. Read more
source§

impl<A: MulticastAddress + MappedAddress> Witness<A> for MulticastAddr<NonMappedAddr<A>>

source§

fn new(addr: A) -> Option<MulticastAddr<NonMappedAddr<A>>>

Constructs a new witness type. Read more
source§

unsafe fn new_unchecked(addr: A) -> MulticastAddr<NonMappedAddr<A>>

Constructs a new witness type without checking to see if addr actually satisfies the required property. Read more
source§

fn into_addr(self) -> A

Consumes this witness and returns the contained A. Read more
source§

fn from_witness<W: Witness<A>>(addr: W) -> Option<Self>

Constructs a new witness type from an existing witness type. Read more
source§

impl<A: Copy> Copy for MulticastAddr<A>

source§

impl<A: Eq> Eq for MulticastAddr<A>

source§

impl<A> StructuralPartialEq for MulticastAddr<A>

Auto Trait Implementations§

§

impl<A> Freeze for MulticastAddr<A>
where A: Freeze,

§

impl<A> RefUnwindSafe for MulticastAddr<A>
where A: RefUnwindSafe,

§

impl<A> Send for MulticastAddr<A>
where A: Send,

§

impl<A> Sync for MulticastAddr<A>
where A: Sync,

§

impl<A> Unpin for MulticastAddr<A>
where A: Unpin,

§

impl<A> UnwindSafe for MulticastAddr<A>
where A: UnwindSafe,

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> CloneToUninit for T
where T: Clone,

source§

default unsafe fn clone_to_uninit(&self, dst: *mut T)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dst. Read more
source§

impl<T> CloneToUninit for T
where T: Copy,

source§

unsafe fn clone_to_uninit(&self, dst: *mut T)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dst. 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> ToOwned for T
where T: Clone,

§

type Owned = T

The resulting type after obtaining ownership.
source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
source§

impl<T> ToString for T
where T: Display + ?Sized,

source§

default fn to_string(&self) -> String

Converts the given value to a String. Read more
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.
source§

impl<A> LinkLocalBroadcastAddress for A

source§

impl<A> LinkLocalUnicastAddress for A