Enum Protocol
#[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§
§impl<'a> Protocol<'a>
 
impl<'a> Protocol<'a>
pub 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.
pub 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.
pub 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.
pub 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.