Struct libp2p_core::Multiaddr
source · pub struct Multiaddr { /* private fields */ }
Expand description
Representation of a Multiaddr.
Implementations
sourceimpl Multiaddr
impl Multiaddr
sourcepub fn into_bytes(self) -> Vec<u8, Global>
pub fn into_bytes(self) -> Vec<u8, Global>
Returns the raw bytes representation of the multiaddr.
sourcepub fn to_bytes(&self) -> Vec<u8, Global>
pub fn to_bytes(&self) -> Vec<u8, Global>
Return a copy to disallow changing the bytes directly
sourcepub fn from_bytes(bytes: Vec<u8, Global>) -> Result<Multiaddr, Error>
pub fn from_bytes(bytes: Vec<u8, Global>) -> Result<Multiaddr, Error>
Produces a Multiaddr
from its bytes representation.
sourcepub fn as_slice(&self) -> &[u8]ⓘNotable traits for &mut [u8]impl Write for &mut [u8]impl Read for &[u8]
pub fn as_slice(&self) -> &[u8]ⓘNotable traits for &mut [u8]impl Write for &mut [u8]impl Read for &[u8]
Extracts a slice containing the entire underlying vector.
sourcepub fn encapsulate<T>(&self, input: T) -> Result<Multiaddr, Error>where
T: ToMultiaddr,
pub fn encapsulate<T>(&self, input: T) -> Result<Multiaddr, Error>where
T: ToMultiaddr,
Wrap a given Multiaddr and return the combination.
Examples
use parity_multiaddr::Multiaddr;
let address: Multiaddr = "/ip4/127.0.0.1".parse().unwrap();
let nested = address.encapsulate("/udt").unwrap();
assert_eq!(nested, "/ip4/127.0.0.1/udt".parse().unwrap());
sourcepub fn append(&mut self, p: Protocol<'_>)
pub fn append(&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.append(Protocol::Tcp(10000));
assert_eq!(address, "/ip4/127.0.0.1/tcp/10000".parse().unwrap());
sourcepub fn decapsulate<T>(&self, input: T) -> Result<Multiaddr, Error>where
T: ToMultiaddr,
pub fn decapsulate<T>(&self, input: T) -> Result<Multiaddr, Error>where
T: ToMultiaddr,
Remove the outermost address.
Examples
use parity_multiaddr::{Multiaddr, ToMultiaddr};
let address: Multiaddr = "/ip4/127.0.0.1/udt/sctp/5678".parse().unwrap();
let unwrapped = address.decapsulate("/udt").unwrap();
assert_eq!(unwrapped, "/ip4/127.0.0.1".parse().unwrap());
assert_eq!(
address.decapsulate("/udt").unwrap(),
"/ip4/127.0.0.1".to_multiaddr().unwrap()
);
Returns the original if the passed in address is not found
use parity_multiaddr::ToMultiaddr;
let address = "/ip4/127.0.0.1/udt/sctp/5678".to_multiaddr().unwrap();
let unwrapped = address.decapsulate("/ip4/127.0.1.1").unwrap();
assert_eq!(unwrapped, address);
sourcepub fn iter(&self) -> Iter<'_>
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));
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 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);
Trait Implementations
sourceimpl<'de> Deserialize<'de> for Multiaddr
impl<'de> Deserialize<'de> for Multiaddr
sourcefn 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>,
Deserialize this value from the given Serde deserializer. Read more
sourceimpl<'a> FromIterator<Protocol<'a>> for Multiaddr
impl<'a> FromIterator<Protocol<'a>> for Multiaddr
sourceimpl<'a> IntoIterator for &'a Multiaddr
impl<'a> IntoIterator for &'a Multiaddr
sourceimpl Serialize for Multiaddr
impl Serialize for Multiaddr
sourcefn 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,
Serialize this value into the given Serde serializer. Read more
sourceimpl ToMultiaddr for Multiaddr
impl ToMultiaddr for Multiaddr
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
sourceimpl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
const: unstable · sourcefn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more