Struct libp2p_core::Multiaddr
source · pub struct Multiaddr { /* private fields */ }
Expand description
Representation of a Multiaddr.
Implementations§
source§impl Multiaddr
impl Multiaddr
sourcepub fn with_capacity(n: usize) -> Multiaddr
pub fn with_capacity(n: usize) -> Multiaddr
Create a new, empty multiaddress with the given capacity.
sourcepub fn push(&mut self, p: Protocol<'_>)
pub fn push(&mut self, p: Protocol<'_>)
Adds an already-parsed address component to the end of this multiaddr.
Examples
use multiaddr::{Multiaddr, Protocol};
let mut address: Multiaddr = "/ip4/127.0.0.1".parse().unwrap();
address.push(Protocol::Tcp(10000));
assert_eq!(address, "/ip4/127.0.0.1/tcp/10000".parse().unwrap());
sourcepub fn pop<'a>(&mut self) -> Option<Protocol<'a>>
pub fn pop<'a>(&mut self) -> Option<Protocol<'a>>
Pops the last Protocol
of this multiaddr, or None
if the multiaddr is empty.
use multiaddr::{Multiaddr, Protocol};
let mut address: Multiaddr = "/ip4/127.0.0.1/udt/sctp/5678".parse().unwrap();
assert_eq!(address.pop().unwrap(), Protocol::Sctp(5678));
assert_eq!(address.pop().unwrap(), Protocol::Udt);
sourcepub fn with(self, p: Protocol<'_>) -> Multiaddr
pub fn with(self, p: Protocol<'_>) -> Multiaddr
Like Multiaddr::push
but consumes self
.
sourcepub fn iter(&self) -> Iter<'_>
pub fn iter(&self) -> Iter<'_>
Returns the components of this multiaddress.
Example
use std::net::Ipv4Addr;
use multiaddr::{Multiaddr, Protocol};
let address: Multiaddr = "/ip4/127.0.0.1/udt/sctp/5678".parse().unwrap();
let components = address.iter().collect::<Vec<_>>();
assert_eq!(components[0], Protocol::Ip4(Ipv4Addr::new(127, 0, 0, 1)));
assert_eq!(components[1], Protocol::Udt);
assert_eq!(components[2], Protocol::Sctp(5678));
sourcepub fn replace<'a, F>(&self, at: usize, by: F) -> Option<Multiaddr>where
F: FnOnce(&Protocol<'_>) -> Option<Protocol<'a>>,
pub fn replace<'a, F>(&self, at: usize, by: F) -> Option<Multiaddr>where F: FnOnce(&Protocol<'_>) -> Option<Protocol<'a>>,
Replace a Protocol
at some position in this Multiaddr
.
The parameter at
denotes the index of the protocol at which the function
by
will be applied to the current protocol, returning an optional replacement.
If at
is out of bounds or by
does not yield a replacement value,
None
will be returned. Otherwise a copy of this Multiaddr
with the
updated Protocol
at position at
will be returned.
sourcepub fn ends_with(&self, other: &Multiaddr) -> bool
pub fn ends_with(&self, other: &Multiaddr) -> bool
Checks whether the given Multiaddr
is a suffix of this Multiaddr
.
sourcepub fn protocol_stack(&self) -> ProtoStackIter<'_>
pub fn protocol_stack(&self) -> ProtoStackIter<'_>
Returns &str identifiers for the protocol names themselves.
This omits specific info like addresses, ports, peer IDs, and the like.
Example: "/ip4/127.0.0.1/tcp/5001"
would return ["ip4", "tcp"]
Trait Implementations§
source§impl<'de> Deserialize<'de> for Multiaddr
impl<'de> Deserialize<'de> for Multiaddr
source§fn deserialize<D>(
deserializer: D
) -> Result<Multiaddr, <D as Deserializer<'de>>::Error>where
D: Deserializer<'de>,
fn deserialize<D>( deserializer: D ) -> Result<Multiaddr, <D as Deserializer<'de>>::Error>where D: Deserializer<'de>,
source§impl<'a> FromIterator<Protocol<'a>> for Multiaddr
impl<'a> FromIterator<Protocol<'a>> for Multiaddr
source§impl<'a> IntoIterator for &'a Multiaddr
impl<'a> IntoIterator for &'a Multiaddr
source§impl Ord for Multiaddr
impl Ord for Multiaddr
source§impl PartialEq<Multiaddr> for Multiaddr
impl PartialEq<Multiaddr> for Multiaddr
source§impl PartialOrd<Multiaddr> for Multiaddr
impl PartialOrd<Multiaddr> for Multiaddr
1.0.0 · source§fn le(&self, other: &Rhs) -> bool
fn le(&self, other: &Rhs) -> bool
self
and other
) and is used by the <=
operator. Read more