Struct tc_network::Multiaddr[]

pub struct Multiaddr { /* fields omitted */ }

Representation of a Multiaddr.

Implementations

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 is_empty(&self) -> bool

Returns true if the length of this multiaddress is 0.

pub fn to_vec(&self) -> Vec<u8, Global>

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 tetsy_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 tetsy_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 Multiaddr::push but consumes self.

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.

Example

use std::net::Ipv4Addr;
use tetsy_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>>, 

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 AsRef<[u8]> for Multiaddr

impl Clone for Multiaddr

impl Debug for Multiaddr

impl<'de> Deserialize<'de> for Multiaddr

impl Display for Multiaddr

pub fn fmt(&self, f: &mut Formatter<'_>) -> Result<(), Error>

Convert a Multiaddr to a string

Example

use tetsy_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 Eq for Multiaddr

impl From<IpAddr> for Multiaddr

impl From<Ipv4Addr> for Multiaddr

impl From<Ipv6Addr> for Multiaddr

impl<'a> From<Protocol<'a>> for Multiaddr

impl<'a> FromIterator<Protocol<'a>> for Multiaddr

impl FromStr for Multiaddr

type Err = Error

The associated error which can be returned from parsing.

impl Hash for Multiaddr

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?

impl Ord for Multiaddr

impl PartialEq<Multiaddr> for Multiaddr

impl PartialOrd<Multiaddr> for Multiaddr

impl Serialize for Multiaddr

impl StructuralEq for Multiaddr

impl StructuralPartialEq for Multiaddr

impl<'a> TryFrom<&'a str> for Multiaddr

type Error = Error

The type returned in the event of a conversion error.

impl TryFrom<String> for Multiaddr

type Error = Error

The type returned in the event of a conversion error.

impl TryFrom<Vec<u8, Global>> for Multiaddr

type Error = Error

The type returned in the event of a conversion error.

Auto Trait Implementations

Blanket Implementations

impl<T> Any for T where
    T: 'static + ?Sized
[src]

impl<T, U> AsByteSlice<T> for U where
    T: ToByteSlice,
    U: AsRef<[T]> + ?Sized

impl<U> AsSliceOf for U where
    U: AsRef<[u8]> + ?Sized

impl<T> Borrow<T> for T where
    T: ?Sized
[src]

impl<T> BorrowMut<T> for T where
    T: ?Sized
[src]

impl<T> CallHasher for T where
    T: Hash

impl<T> CheckedConversion for T[src]

impl<T> DeserializeOwned for T where
    T: for<'de> Deserialize<'de>, 
[src]

impl<T> Downcast for T where
    T: Any

impl<T> DowncastSync for T where
    T: Any + Send + Sync

impl<T> DynClone for T where
    T: Clone
[src]

impl<Q, K> Equivalent<K> for Q where
    K: Borrow<Q> + ?Sized,
    Q: Eq + ?Sized
[src]

impl<T> Error for T where
    T: 'static + Debug + Display + Send + Sync

impl<T> ExHashT for T where
    T: Hash + Eq + Debug + Clone + Send + Sync + 'static, 
[src]

impl<T> From<T> for T[src]

impl<T> Instrument for T[src]

impl<T> Instrument for T[src]

impl<T, U> Into<U> for T where
    U: From<T>, 
[src]

impl<T, Outer> IsWrappedBy<Outer> for T where
    T: From<Outer>,
    Outer: AsRef<T> + AsMut<T> + From<T>, 
[src]

pub fn from_ref(outer: &Outer) -> &T[src]

Get a reference to the inner from the outer.

pub fn from_mut(outer: &mut Outer) -> &mut T[src]

Get a mutable reference to the inner from the outer.

impl<T> MaybeDebug for T where
    T: Debug

impl<T> MaybeDebug for T where
    T: Debug

impl<T> MaybeDisplay for T where
    T: Display
[src]

impl<T> MaybeFromStr for T where
    T: FromStr
[src]

impl<T> MaybeHash for T where
    T: Hash
[src]

impl<T> MaybeHash for T where
    T: Hash

impl<T> MaybeRefUnwindSafe for T where
    T: RefUnwindSafe

impl<T> MaybeSerialize for T where
    T: Serialize
[src]

impl<T> MaybeSerializeDeserialize for T where
    T: DeserializeOwned + Serialize
[src]

impl<T> Member for T where
    T: 'static + Send + Sync + Debug + Eq + PartialEq<T> + Clone
[src]

impl<T> ProtocolName for T where
    T: AsRef<[u8]>, 

impl<T> Same<T> for T

type Output = T

Should always be Self

impl<T> SaturatedConversion for T[src]

impl<T> Serialize for T where
    T: Serialize + ?Sized
[src]

impl<T> ToHex for T where
    T: AsRef<[u8]>, 
[src]

impl<T> ToOwned for T where
    T: Clone
[src]

type Owned = T

The resulting type after obtaining ownership.

impl<T> ToString for T where
    T: Display + ?Sized
[src]

impl<T, U> TryFrom<U> for T where
    U: Into<T>, 
[src]

type Error = Infallible

The type returned in the event of a conversion error.

impl<T, U> TryInto<U> for T where
    U: TryFrom<T>, 
[src]

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.

impl<S, T> UncheckedInto<T> for S where
    T: UncheckedFrom<S>, 
[src]

impl<T, S> UniqueSaturatedInto<T> for S where
    T: Bounded,
    S: TryInto<T>, 
[src]

impl<V, T> VZip<V> for T where
    V: MultiLane<T>,