pub struct Multiaddr { /* private fields */ }Expand description
Representation of a Multiaddr.
Implementations§
§impl Multiaddr
 
impl Multiaddr
pub fn with_capacity(n: usize) -> Multiaddr
pub fn with_capacity(n: usize) -> Multiaddr
Create a new, empty multiaddress with the given capacity.
pub 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());pub 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);pub fn with(self, p: Protocol<'_>) -> Multiaddr
pub fn with(self, p: Protocol<'_>) -> Multiaddr
Like Multiaddr::push but consumes self.
pub 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));pub 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.
pub 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.
pub 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 AsRef<Multiaddr> for MultiaddrWithoutPeerId
 
impl AsRef<Multiaddr> for MultiaddrWithoutPeerId
§impl<'de> Deserialize<'de> for Multiaddr
 
impl<'de> Deserialize<'de> for Multiaddr
§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 From<MultiaddrWithPeerId> for Multiaddr
 
impl From<MultiaddrWithPeerId> for Multiaddr
source§fn from(addr: MultiaddrWithPeerId) -> Self
 
fn from(addr: MultiaddrWithPeerId) -> Self
source§impl From<MultiaddrWithoutPeerId> for Multiaddr
 
impl From<MultiaddrWithoutPeerId> for Multiaddr
source§fn from(addr: MultiaddrWithoutPeerId) -> Self
 
fn from(addr: MultiaddrWithoutPeerId) -> Self
§impl<'a> FromIterator<Protocol<'a>> for Multiaddr
 
impl<'a> FromIterator<Protocol<'a>> for Multiaddr
§impl<'a> IntoIterator for &'a Multiaddr
 
impl<'a> IntoIterator for &'a Multiaddr
§impl Ord for Multiaddr
 
impl Ord for Multiaddr
source§impl PartialEq<Multiaddr> for MultiaddrWithoutPeerId
 
impl PartialEq<Multiaddr> for MultiaddrWithoutPeerId
§impl PartialOrd<Multiaddr> for Multiaddr
 
impl PartialOrd<Multiaddr> for Multiaddr
§fn partial_cmp(&self, other: &Multiaddr) -> Option<Ordering>
 
fn partial_cmp(&self, other: &Multiaddr) -> Option<Ordering>
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§impl Serialize for Multiaddr
 
impl Serialize for Multiaddr
§fn serialize<S>(
    &self,
    serializer: S
) -> Result<<S as Serializer>::Ok, <S as Serializer>::Error>where
    S: Serializer,
 
fn serialize<S>( &self, serializer: S ) -> Result<<S as Serializer>::Ok, <S as Serializer>::Error>where S: Serializer,
source§impl TryFrom<Multiaddr> for MultiaddrWithPeerId
 
impl TryFrom<Multiaddr> for MultiaddrWithPeerId
source§impl TryFrom<Multiaddr> for MultiaddrWithoutPeerId
 
impl TryFrom<Multiaddr> for MultiaddrWithoutPeerId
impl Eq for Multiaddr
impl StructuralEq for Multiaddr
impl StructuralPartialEq for Multiaddr
Auto Trait Implementations§
impl RefUnwindSafe for Multiaddr
impl Send for Multiaddr
impl Sync for Multiaddr
impl Unpin for Multiaddr
impl UnwindSafe for Multiaddr
Blanket Implementations§
§impl<'a, T, E> AsTaggedExplicit<'a, E> for Twhere
    T: 'a,
 
impl<'a, T, E> AsTaggedExplicit<'a, E> for Twhere T: 'a,
§impl<'a, T, E> AsTaggedImplicit<'a, E> for Twhere
    T: 'a,
 
impl<'a, T, E> AsTaggedImplicit<'a, E> for Twhere T: 'a,
§impl<Q, K> Equivalent<K> for Qwhere
    Q: Eq + ?Sized,
    K: Borrow<Q> + ?Sized,
 
impl<Q, K> Equivalent<K> for Qwhere Q: Eq + ?Sized, K: Borrow<Q> + ?Sized,
§fn equivalent(&self, key: &K) -> bool
 
fn equivalent(&self, key: &K) -> bool
source§impl<Q, K> Equivalent<K> for Qwhere
    Q: Eq + ?Sized,
    K: Borrow<Q> + ?Sized,
 
impl<Q, K> Equivalent<K> for Qwhere Q: Eq + ?Sized, K: Borrow<Q> + ?Sized,
source§fn equivalent(&self, key: &K) -> bool
 
fn equivalent(&self, key: &K) -> bool
key and return true if they are equal.source§impl<T> Instrument for T
 
impl<T> Instrument for T
source§fn instrument(self, span: Span) -> Instrumented<Self>
 
fn instrument(self, span: Span) -> Instrumented<Self>
source§fn in_current_span(self) -> Instrumented<Self>
 
fn in_current_span(self) -> Instrumented<Self>
source§impl<T> Instrument for T
 
impl<T> Instrument for T
source§fn instrument(self, span: Span) -> Instrumented<Self>
 
fn instrument(self, span: Span) -> Instrumented<Self>
source§fn in_current_span(self) -> Instrumented<Self>
 
fn in_current_span(self) -> Instrumented<Self>
§impl<T> Pointable for T
 
impl<T> Pointable for T
§impl<T> ProtocolName for Twhere
    T: AsRef<[u8]>,
 
impl<T> ProtocolName for Twhere T: AsRef<[u8]>,
§fn protocol_name(&self) -> &[u8] ⓘ
 
fn protocol_name(&self) -> &[u8] ⓘ
§impl<T> References<RawCodec> for T
 
impl<T> References<RawCodec> for T
source§impl<T> ToHex for Twhere
    T: AsRef<[u8]>,
 
impl<T> ToHex for Twhere T: AsRef<[u8]>,
source§fn encode_hex<U>(&self) -> Uwhere
    U: FromIterator<char>,
 
fn encode_hex<U>(&self) -> Uwhere U: FromIterator<char>,
self into the result. Lower case
letters are used (e.g. f9b4ca)source§fn encode_hex_upper<U>(&self) -> Uwhere
    U: FromIterator<char>,
 
fn encode_hex_upper<U>(&self) -> Uwhere U: FromIterator<char>,
self into the result. Upper case
letters are used (e.g. F9B4CA)