[−]Struct libp2p_core::Multiaddr
Representation of a Multiaddr.
Methods
impl Multiaddr
pub fn empty() -> Multiaddr
Create a new, empty multiaddress.
pub fn with_capacity(n: usize) -> Multiaddr
Create a new, empty multiaddress with the given capacity.
pub fn len(&self) -> usize
Return the length in bytes of this multiaddress.
pub fn to_vec(&self) -> Vec<u8>
Return a copy of this Multiaddr's byte representation.
pub fn push(&mut self, p: Protocol)
Adds an already-parsed address component to the end of this multiaddr.
Examples
use parity_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>>
Pops the last Protocol of this multiaddr, or None if the multiaddr is empty.
use parity_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
Like [push] but more efficient if this Multiaddr has no living clones.
pub fn iter(&self) -> Iter
Returns the components of this multiaddress.
use std::net::Ipv4Addr; use parity_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>>,
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.
Trait Implementations
impl FromStr for Multiaddr
type Err = Error
The associated error which can be returned from parsing.
fn from_str(input: &str) -> Result<Multiaddr, Error>
impl Hash for Multiaddr
fn hash<__H>(&self, state: &mut __H) where
__H: Hasher,
__H: Hasher,
fn hash_slice<H>(data: &[Self], state: &mut H) where
H: Hasher, 1.3.0[src]
H: Hasher,
Feeds a slice of this type into the given [Hasher]. Read more
impl<'a> TryFrom<&'a str> for Multiaddr
type Error = Error
The type returned in the event of a conversion error.
fn try_from(s: &'a str) -> Result<Multiaddr, Error>
impl TryFrom<Bytes> for Multiaddr
type Error = Error
The type returned in the event of a conversion error.
fn try_from(v: Bytes) -> Result<Multiaddr, Error>
impl TryFrom<String> for Multiaddr
type Error = Error
The type returned in the event of a conversion error.
fn try_from(s: String) -> Result<Multiaddr, Error>
impl TryFrom<Vec<u8>> for Multiaddr
type Error = Error
The type returned in the event of a conversion error.
fn try_from(v: Vec<u8>) -> Result<Multiaddr, Error>
impl TryFrom<BytesMut> for Multiaddr
type Error = Error
The type returned in the event of a conversion error.
fn try_from(v: BytesMut) -> Result<Multiaddr, Error>
impl<'a> IntoIterator for &'a Multiaddr
type Item = Protocol<'a>
The type of the elements being iterated over.
type IntoIter = Iter<'a>
Which kind of iterator are we turning this into?
fn into_iter(self) -> Iter<'a>
impl<'a> FromIterator<Protocol<'a>> for Multiaddr
fn from_iter<T>(iter: T) -> Multiaddr where
T: IntoIterator<Item = Protocol<'a>>,
T: IntoIterator<Item = Protocol<'a>>,
impl Clone for Multiaddr
fn clone(&self) -> Multiaddr
fn clone_from(&mut self, source: &Self)1.0.0[src]
Performs copy-assignment from source. Read more
impl Eq for Multiaddr
impl Debug for Multiaddr
impl Display for Multiaddr
fn fmt(&self, f: &mut Formatter) -> Result<(), Error>
Convert a Multiaddr to a string
Examples
use parity_multiaddr::Multiaddr; let address: Multiaddr = "/ip4/127.0.0.1/udt".parse().unwrap(); assert_eq!(address.to_string(), "/ip4/127.0.0.1/udt");
impl PartialEq<Multiaddr> for Multiaddr
impl<'a> From<Protocol<'a>> for Multiaddr
impl From<IpAddr> for Multiaddr
impl From<Ipv4Addr> for Multiaddr
impl From<Ipv6Addr> for Multiaddr
impl AsRef<[u8]> for Multiaddr
impl<'de> Deserialize<'de> for Multiaddr
fn deserialize<D>(
deserializer: D
) -> Result<Multiaddr, <D as Deserializer<'de>>::Error> where
D: Deserializer<'de>,
deserializer: D
) -> Result<Multiaddr, <D as Deserializer<'de>>::Error> where
D: Deserializer<'de>,
impl Serialize for Multiaddr
fn serialize<S>(
&self,
serializer: S
) -> Result<<S as Serializer>::Ok, <S as Serializer>::Error> where
S: Serializer,
&self,
serializer: S
) -> Result<<S as Serializer>::Ok, <S as Serializer>::Error> where
S: Serializer,
Auto Trait Implementations
impl Unpin for Multiaddr
impl Sync for Multiaddr
impl Send for Multiaddr
impl RefUnwindSafe for Multiaddr
impl UnwindSafe for Multiaddr
Blanket Implementations
impl<T> ProtocolName for T where
T: AsRef<[u8]>, [src]
T: AsRef<[u8]>,
impl<T> From<T> for T[src]
impl<T> ToOwned for T where
T: Clone, [src]
T: Clone,
type Owned = T
The resulting type after obtaining ownership.
fn to_owned(&self) -> T[src]
fn clone_into(&self, target: &mut T)[src]
impl<T, U> Into<U> for T where
U: From<T>, [src]
U: From<T>,
impl<T> ToString for T where
T: Display + ?Sized, [src]
T: Display + ?Sized,
impl<T, U> TryFrom<U> for T where
U: Into<T>, [src]
U: Into<T>,
type Error = Infallible
The type returned in the event of a conversion error.
fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>[src]
impl<T, U> TryInto<U> for T where
U: TryFrom<T>, [src]
U: TryFrom<T>,
type Error = <U as TryFrom<T>>::Error
The type returned in the event of a conversion error.
fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>[src]
impl<T> Borrow<T> for T where
T: ?Sized, [src]
T: ?Sized,
impl<T> BorrowMut<T> for T where
T: ?Sized, [src]
T: ?Sized,
fn borrow_mut(&mut self) -> &mut T[src]
impl<T> Any for T where
T: 'static + ?Sized, [src]
T: 'static + ?Sized,
impl<T> DeserializeOwned for T where
T: Deserialize<'de>, [src]
T: Deserialize<'de>,
impl<T> Same<T> for T
type Output = T
Should always be Self