#[non_exhaustive]pub enum ServerName<'a> {
DnsName(DnsName<'a>),
IpAddress(IpAddr),
}Expand description
Encodes ways a client can know the expected name of the server.
This currently covers knowing the DNS name of the server, but
will be extended in the future to supporting privacy-preserving names
for the server (“ECH”). For this reason this enum is non_exhaustive.
§Making one
If you have a DNS name as a &str, this type implements TryFrom<&str>,
so you can do:
ServerName::try_from("example.com").expect("invalid DNS name");If you have an owned String, you can use TryFrom directly:
let name = "example.com".to_string();
#[cfg(feature = "alloc")]
ServerName::try_from(name).expect("invalid DNS name");which will yield a ServerName<'static> if successful.
or, alternatively…
let x: ServerName = "example.com".try_into().expect("invalid DNS name");Variants (Non-exhaustive)§
This enum is marked as non-exhaustive
DnsName(DnsName<'a>)
The server is identified by a DNS name. The name is sent in the TLS Server Name Indication (SNI) extension.
IpAddress(IpAddr)
The server is identified by an IP address. SNI is not done.
Implementations§
Source§impl ServerName<'_>
impl ServerName<'_>
Sourcepub fn to_owned(&self) -> ServerName<'static>
Available on crate feature alloc only.
pub fn to_owned(&self) -> ServerName<'static>
alloc only.Produce an owned ServerName from this (potentially borrowed) ServerName.
Trait Implementations§
Source§impl<'a> Clone for ServerName<'a>
impl<'a> Clone for ServerName<'a>
Source§fn clone(&self) -> ServerName<'a>
fn clone(&self) -> ServerName<'a>
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreSource§impl Debug for ServerName<'_>
impl Debug for ServerName<'_>
Source§impl From<IpAddr> for ServerName<'_>
impl From<IpAddr> for ServerName<'_>
Source§impl From<IpAddr> for ServerName<'_>
Available on crate feature std only.
impl From<IpAddr> for ServerName<'_>
std only.Source§impl From<Ipv4Addr> for ServerName<'_>
impl From<Ipv4Addr> for ServerName<'_>
Source§impl From<Ipv4Addr> for ServerName<'_>
Available on crate feature std only.
impl From<Ipv4Addr> for ServerName<'_>
std only.Source§impl From<Ipv6Addr> for ServerName<'_>
impl From<Ipv6Addr> for ServerName<'_>
Source§impl From<Ipv6Addr> for ServerName<'_>
Available on crate feature std only.
impl From<Ipv6Addr> for ServerName<'_>
std only.Source§impl<'a> Hash for ServerName<'a>
impl<'a> Hash for ServerName<'a>
Source§impl<'a> PartialEq for ServerName<'a>
impl<'a> PartialEq for ServerName<'a>
Source§impl<'a> TryFrom<&'a [u8]> for ServerName<'a>
impl<'a> TryFrom<&'a [u8]> for ServerName<'a>
Source§impl<'a> TryFrom<&'a str> for ServerName<'a>
Attempt to make a ServerName from a string by parsing as a DNS name or IP address.
impl<'a> TryFrom<&'a str> for ServerName<'a>
Attempt to make a ServerName from a string by parsing as a DNS name or IP address.
Source§impl TryFrom<String> for ServerName<'static>
Available on crate feature alloc only.
impl TryFrom<String> for ServerName<'static>
alloc only.impl<'a> Eq for ServerName<'a>
impl<'a> StructuralPartialEq for ServerName<'a>
Auto Trait Implementations§
impl<'a> Freeze for ServerName<'a>
impl<'a> RefUnwindSafe for ServerName<'a>
impl<'a> Send for ServerName<'a>
impl<'a> Sync for ServerName<'a>
impl<'a> Unpin for ServerName<'a>
impl<'a> UnwindSafe for ServerName<'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,
Layout§
Note: Most layout information is completely unstable and may even differ between compilations. The only exception is types with certain repr(...) attributes. Please see the Rust Reference's “Type Layout” chapter for details on type layout guarantees.
Size: 32 bytes
Size for each variant:
DnsName: 31 bytesIpAddress: 17 bytes