#[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<'a> ServerName<'a>
impl<'a> ServerName<'a>
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<'a> Debug for ServerName<'a>
impl<'a> Debug for ServerName<'a>
Source§impl From<IpAddr> for ServerName<'_>
impl From<IpAddr> for ServerName<'_>
Source§fn from(addr: IpAddr) -> ServerName<'_>
fn from(addr: IpAddr) -> ServerName<'_>
Source§impl From<IpAddr> for ServerName<'_>
Available on crate feature std
only.
impl From<IpAddr> for ServerName<'_>
std
only.Source§fn from(addr: IpAddr) -> ServerName<'_>
fn from(addr: IpAddr) -> ServerName<'_>
Source§impl From<Ipv4Addr> for ServerName<'_>
impl From<Ipv4Addr> for ServerName<'_>
Source§fn from(v4: Ipv4Addr) -> ServerName<'_>
fn from(v4: Ipv4Addr) -> ServerName<'_>
Source§impl From<Ipv4Addr> for ServerName<'_>
Available on crate feature std
only.
impl From<Ipv4Addr> for ServerName<'_>
std
only.Source§fn from(v4: Ipv4Addr) -> ServerName<'_>
fn from(v4: Ipv4Addr) -> ServerName<'_>
Source§impl From<Ipv6Addr> for ServerName<'_>
impl From<Ipv6Addr> for ServerName<'_>
Source§fn from(v6: Ipv6Addr) -> ServerName<'_>
fn from(v6: Ipv6Addr) -> ServerName<'_>
Source§impl From<Ipv6Addr> for ServerName<'_>
Available on crate feature std
only.
impl From<Ipv6Addr> for ServerName<'_>
std
only.Source§fn from(v6: Ipv6Addr) -> ServerName<'_>
fn from(v6: Ipv6Addr) -> ServerName<'_>
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§type Error = InvalidDnsNameError
type Error = InvalidDnsNameError
Source§fn try_from(
value: &'a [u8],
) -> Result<ServerName<'a>, <ServerName<'a> as TryFrom<&'a [u8]>>::Error>
fn try_from( value: &'a [u8], ) -> Result<ServerName<'a>, <ServerName<'a> as TryFrom<&'a [u8]>>::Error>
Source§impl<'a> TryFrom<&'a str> for ServerName<'a>
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§type Error = InvalidDnsNameError
type Error = InvalidDnsNameError
Source§fn try_from(
s: &'a str,
) -> Result<ServerName<'a>, <ServerName<'a> as TryFrom<&'a str>>::Error>
fn try_from( s: &'a str, ) -> Result<ServerName<'a>, <ServerName<'a> as TryFrom<&'a str>>::Error>
Source§impl TryFrom<String> for ServerName<'static>
Available on crate feature alloc
only.
impl TryFrom<String> for ServerName<'static>
alloc
only.Source§type Error = InvalidDnsNameError
type Error = InvalidDnsNameError
Source§fn try_from(
value: String,
) -> Result<ServerName<'static>, <ServerName<'static> as TryFrom<String>>::Error>
fn try_from( value: String, ) -> Result<ServerName<'static>, <ServerName<'static> as TryFrom<String>>::Error>
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