#[non_exhaustive]pub enum Protocol<'a> {
Show 39 variants
Dccp(u16),
Dns(Cow<'a, str>),
Dns4(Cow<'a, str>),
Dns6(Cow<'a, str>),
Dnsaddr(Cow<'a, str>),
Http,
Https,
Ip4(Ipv4Addr),
Ip6(Ipv6Addr),
P2pWebRtcDirect,
P2pWebRtcStar,
WebRTCDirect,
Certhash(Multihash<64>),
P2pWebSocketStar,
Memory(u64),
Onion(Cow<'a, [u8; 10]>, u16),
Onion3(Onion3Addr<'a>),
P2p(PeerId),
P2pCircuit,
Quic,
QuicV1,
Sctp(u16),
Tcp(u16),
Tls,
Noise,
Udp(u16),
Udt,
Unix(Cow<'a, str>),
Utp,
WebTransport,
Ws(Cow<'a, str>),
Wss(Cow<'a, str>),
Ip6zone(Cow<'a, str>),
Ipcidr(u8),
Garlic64(Cow<'a, [u8]>),
Garlic32(Cow<'a, [u8]>),
Sni(Cow<'a, str>),
P2pStardust,
WebRTC,
}
Expand description
Protocol
describes all possible multiaddress protocols.
For Unix
, Ws
and Wss
we use &str
instead of Path
to allow
cross-platform usage of Protocol
since encoding Paths
to bytes is
platform-specific. This means that the actual validation of paths needs to
happen separately.
Variants (Non-exhaustive)§
This enum is marked as non-exhaustive
Dccp(u16)
Dns(Cow<'a, str>)
Dns4(Cow<'a, str>)
Dns6(Cow<'a, str>)
Dnsaddr(Cow<'a, str>)
Http
Https
Ip4(Ipv4Addr)
Ip6(Ipv6Addr)
P2pWebRtcDirect
P2pWebRtcStar
WebRTCDirect
Certhash(Multihash<64>)
P2pWebSocketStar
Memory(u64)
Contains the “port” to contact. Similar to TCP or UDP, 0 means “assign me a port”.
Onion(Cow<'a, [u8; 10]>, u16)
Onion3(Onion3Addr<'a>)
P2p(PeerId)
P2pCircuit
Quic
QuicV1
Sctp(u16)
Tcp(u16)
Tls
Noise
Udp(u16)
Udt
Unix(Cow<'a, str>)
Utp
WebTransport
Ws(Cow<'a, str>)
Wss(Cow<'a, str>)
Ip6zone(Cow<'a, str>)
Ipcidr(u8)
Garlic64(Cow<'a, [u8]>)
Garlic32(Cow<'a, [u8]>)
Sni(Cow<'a, str>)
P2pStardust
WebRTC
Implementations§
source§impl<'a> Protocol<'a>
impl<'a> Protocol<'a>
sourcepub fn from_str_parts<I>(iter: I) -> Result<Protocol<'a>, Error>
pub fn from_str_parts<I>(iter: I) -> Result<Protocol<'a>, Error>
Parse a protocol value from the given iterator of string slices.
The parsing only consumes the minimum amount of string slices necessary to produce a well-formed protocol. The same iterator can thus be used to parse a sequence of protocols in succession. It is up to client code to check that iteration has finished whenever appropriate.
sourcepub fn from_bytes(input: &'a [u8]) -> Result<(Protocol<'a>, &'a [u8]), Error>
pub fn from_bytes(input: &'a [u8]) -> Result<(Protocol<'a>, &'a [u8]), Error>
Parse a single Protocol
value from its byte slice representation,
returning the protocol as well as the remaining byte slice.
sourcepub fn write_bytes<W>(&self, w: &mut W) -> Result<(), Error>where
W: Write,
pub fn write_bytes<W>(&self, w: &mut W) -> Result<(), Error>where
W: Write,
Encode this protocol by writing its binary representation into
the given Write
impl.
sourcepub fn acquire<'b>(self) -> Protocol<'b>
pub fn acquire<'b>(self) -> Protocol<'b>
Turn this Protocol
into one that owns its data, thus being valid for any lifetime.
pub fn tag(&self) -> &'static str
Trait Implementations§
source§impl<'a> FromIterator<Protocol<'a>> for Multiaddr
impl<'a> FromIterator<Protocol<'a>> for Multiaddr
source§impl<'a> PartialEq for Protocol<'a>
impl<'a> PartialEq for Protocol<'a>
impl<'a> Eq for Protocol<'a>
impl<'a> StructuralPartialEq for Protocol<'a>
Auto Trait Implementations§
impl<'a> Freeze for Protocol<'a>
impl<'a> RefUnwindSafe for Protocol<'a>
impl<'a> Send for Protocol<'a>
impl<'a> Sync for Protocol<'a>
impl<'a> Unpin for Protocol<'a>
impl<'a> UnwindSafe for Protocol<'a>
Blanket Implementations§
source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
source§default unsafe fn clone_to_uninit(&self, dst: *mut T)
default unsafe fn clone_to_uninit(&self, dst: *mut T)
clone_to_uninit
)source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
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> IntoEither for T
impl<T> IntoEither for T
source§fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
self
into a Left
variant of Either<Self, Self>
if into_left
is true
.
Converts self
into a Right
variant of Either<Self, Self>
otherwise. Read moresource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
self
into a Left
variant of Either<Self, Self>
if into_left(&self)
returns true
.
Converts self
into a Right
variant of Either<Self, Self>
otherwise. Read more