pub struct Authority<'a> { /* private fields */ }
Expand description
A URI with an authority only: user:pass@host:8000
.
Structure
The following diagram illustrates the syntactic structure of an authority URI:
username:password@some.host:8088
|---------------| |-------| |--|
user info host port
Only the host part of the URI is required.
(De)serialization
Authority
is both Serialize
and Deserialize
:
use serde::{Serialize, Deserialize};
use rocket::http::uri::Authority;
#[derive(Deserialize, Serialize)]
struct UriOwned {
uri: Authority<'static>,
}
#[derive(Deserialize, Serialize)]
struct UriBorrowed<'a> {
uri: Authority<'a>,
}
Implementations§
§impl<'a> Authority<'a>
impl<'a> Authority<'a>
pub fn parse(string: &'a str) -> Result<Authority<'a>, Error<'a>>
pub fn parse(string: &'a str) -> Result<Authority<'a>, Error<'a>>
Parses the string string
into an Authority
. Parsing will never
allocate. Returns an Error
if string
is not a valid authority URI.
Example
use rocket::http::uri::Authority;
// Parse a valid authority URI.
let uri = Authority::parse("user:pass@host").expect("valid URI");
assert_eq!(uri.user_info(), Some("user:pass"));
assert_eq!(uri.host(), "host");
assert_eq!(uri.port(), None);
// Invalid authority URIs fail to parse.
Authority::parse("https://rocket.rs").expect_err("invalid authority");
// Prefer to use `uri!()` when the input is statically known:
let uri = uri!("user:pass@host");
assert_eq!(uri.user_info(), Some("user:pass"));
assert_eq!(uri.host(), "host");
assert_eq!(uri.port(), None);
pub fn parse_owned(string: String) -> Result<Authority<'static>, Error<'static>>
pub fn parse_owned(string: String) -> Result<Authority<'static>, Error<'static>>
Parses the string string
into an Authority
. Parsing never allocates
on success. May allocate on error.
This method should be used instead of Authority::parse()
when
the source URI is already a String
. Returns an Error
if string
is
not a valid authority URI.
Example
use rocket::http::uri::Authority;
let source = format!("rocket.rs:8000");
let uri = Authority::parse_owned(source).expect("valid URI");
assert!(uri.user_info().is_none());
assert_eq!(uri.host(), "rocket.rs");
assert_eq!(uri.port(), Some(8000));
pub fn user_info(&self) -> Option<&str>
pub fn user_info(&self) -> Option<&str>
Returns the user info part of the authority URI, if there is one.
Example
let uri = uri!("username:password@host");
assert_eq!(uri.user_info(), Some("username:password"));
pub fn host(&self) -> &str
pub fn host(&self) -> &str
Returns the host part of the authority URI.
Example
let uri = uri!("domain.com:123");
assert_eq!(uri.host(), "domain.com");
let uri = uri!("username:password@host:123");
assert_eq!(uri.host(), "host");
let uri = uri!("username:password@[1::2]:123");
assert_eq!(uri.host(), "[1::2]");
pub fn port(&self) -> Option<u16>
pub fn port(&self) -> Option<u16>
Returns the port part of the authority URI, if there is one.
Example
// With a port.
let uri = uri!("username:password@host:123");
assert_eq!(uri.port(), Some(123));
let uri = uri!("domain.com:8181");
assert_eq!(uri.port(), Some(8181));
// Without a port.
let uri = uri!("username:password@host");
assert_eq!(uri.port(), None);
Trait Implementations§
§impl<'a, 'de> Deserialize<'de> for Authority<'a>
impl<'a, 'de> Deserialize<'de> for Authority<'a>
§fn deserialize<D>(
deserializer: D
) -> Result<Authority<'a>, <D as Deserializer<'de>>::Error>where
D: Deserializer<'de>,
fn deserialize<D>( deserializer: D ) -> Result<Authority<'a>, <D as Deserializer<'de>>::Error>where D: Deserializer<'de>,
§impl PartialEq<Authority<'_>> for str
impl PartialEq<Authority<'_>> for str
§impl<'b, 'a> PartialEq<Authority<'a>> for Uri<'b>
impl<'b, 'a> PartialEq<Authority<'a>> for Uri<'b>
§impl<'a, 'b> PartialEq<Authority<'b>> for Authority<'a>
impl<'a, 'b> PartialEq<Authority<'b>> for Authority<'a>
§impl<'a> Serialize for Authority<'a>
impl<'a> Serialize for Authority<'a>
§fn serialize<S>(
&self,
serializer: S
) -> Result<<S as Serializer>::Ok, <S as Serializer>::Error>where
S: Serializer,
fn serialize<S>( &self, serializer: S ) -> Result<<S as Serializer>::Ok, <S as Serializer>::Error>where S: Serializer,
impl Eq for Authority<'_>
Auto Trait Implementations§
impl<'a> RefUnwindSafe for Authority<'a>
impl<'a> Send for Authority<'a>
impl<'a> Sync for Authority<'a>
impl<'a> Unpin for Authority<'a>
impl<'a> UnwindSafe for Authority<'a>
Blanket Implementations§
§impl<'a, T> AsTaggedExplicit<'a> for Twhere
T: 'a,
impl<'a, T> AsTaggedExplicit<'a> for Twhere T: 'a,
§impl<'a, T> AsTaggedImplicit<'a> for Twhere
T: 'a,
impl<'a, T> AsTaggedImplicit<'a> for Twhere T: 'a,
source§impl<Q, K> Equivalent<K> for Qwhere
Q: Eq + ?Sized,
K: Borrow<Q> + ?Sized,
impl<Q, K> Equivalent<K> for Qwhere Q: Eq + ?Sized, K: Borrow<Q> + ?Sized,
source§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
key
and return true
if they are equal.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>
§impl<T> IntoCollection<T> for T
impl<T> IntoCollection<T> for T
§fn into_collection<A>(self) -> SmallVec<A>where
A: Array<Item = T>,
fn into_collection<A>(self) -> SmallVec<A>where A: Array<Item = T>,
self
into a collection.