Struct parity_multiaddr::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>
pub fn into_bytes(self) -> Vec<u8>
Returns the raw bytes representation of the multiaddr.
sourcepub fn from_bytes(bytes: Vec<u8>) -> Result<Multiaddr>
pub fn from_bytes(bytes: Vec<u8>) -> Result<Multiaddr>
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: ToMultiaddr>(&self, input: T) -> Result<Multiaddr>
pub fn encapsulate<T: ToMultiaddr>(&self, input: T) -> Result<Multiaddr>
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: ToMultiaddr>(&self, input: T) -> Result<Multiaddr>
pub fn decapsulate<T: ToMultiaddr>(&self, input: T) -> Result<Multiaddr>
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<'_>ⓘNotable traits for Iter<'a>impl<'a> Iterator for Iter<'a> type Item = Protocol<'a>;
pub fn iter(&self) -> Iter<'_>ⓘNotable traits for Iter<'a>impl<'a> Iterator for Iter<'a> type Item = Protocol<'a>;
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) -> StdResult<Self, D::Error>where
D: Deserializer<'de>,
fn deserialize<D>(deserializer: D) -> StdResult<Self, D::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
sourcefn from_iter<T>(iter: T) -> Selfwhere
T: IntoIterator<Item = Protocol<'a>>,
fn from_iter<T>(iter: T) -> Selfwhere
T: IntoIterator<Item = Protocol<'a>>,
Creates a value from an iterator. Read more
sourceimpl<'a> IntoIterator for &'a Multiaddr
impl<'a> IntoIterator for &'a Multiaddr
sourceimpl ToMultiaddr for Multiaddr
impl ToMultiaddr for Multiaddr
sourcefn to_multiaddr(&self) -> Result<Multiaddr>
fn to_multiaddr(&self) -> Result<Multiaddr>
Converts this object to a Multiaddr Read more
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