Struct rocket_http::uri::Authority
source · 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§
source§impl<'a> Authority<'a>
impl<'a> Authority<'a>
sourcepub 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);
sourcepub 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));
sourcepub 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"));
sourcepub 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]");
sourcepub 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§
source§impl PartialEq<&str> for Authority<'_>
impl PartialEq<&str> for Authority<'_>
source§impl PartialEq<Authority<'_>> for str
impl PartialEq<Authority<'_>> for str
source§impl<'b, 'a> PartialEq<Authority<'a>> for Uri<'b>
impl<'b, 'a> PartialEq<Authority<'a>> for Uri<'b>
source§impl<'a, 'b> PartialEq<Authority<'b>> for Authority<'a>
impl<'a, 'b> PartialEq<Authority<'b>> for Authority<'a>
source§impl<'b, 'a> PartialEq<Uri<'b>> for Authority<'a>
impl<'b, 'a> PartialEq<Uri<'b>> for Authority<'a>
source§impl PartialEq<str> for Authority<'_>
impl PartialEq<str> for Authority<'_>
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§
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
§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,
§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
§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,
§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
key
and return true
if they are equal.§impl<T> Instrument for T
impl<T> Instrument for T
§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
source§impl<T> IntoCollection<T> for T
impl<T> IntoCollection<T> for T
§impl<T> Paint for Twhere
T: ?Sized,
impl<T> Paint for Twhere T: ?Sized,
§fn fg(&self, value: Color) -> Painted<&T>
fn fg(&self, value: Color) -> Painted<&T>
Returns a styled value derived from self
with the foreground set to
value
.
This method should be used rarely. Instead, prefer to use color-specific
builder methods like red()
and
green()
, which have the same functionality but are
pithier.
Example
Set foreground color to white using fg()
:
use yansi::{Paint, Color};
painted.fg(Color::White);
Set foreground color to white using white()
.
use yansi::Paint;
painted.white();
§fn bright_black(&self) -> Painted<&T>
fn bright_black(&self) -> Painted<&T>
§fn bright_red(&self) -> Painted<&T>
fn bright_red(&self) -> Painted<&T>
§fn bright_green(&self) -> Painted<&T>
fn bright_green(&self) -> Painted<&T>
§fn bright_yellow(&self) -> Painted<&T>
fn bright_yellow(&self) -> Painted<&T>
§fn bright_blue(&self) -> Painted<&T>
fn bright_blue(&self) -> Painted<&T>
§fn bright_magenta(&self) -> Painted<&T>
fn bright_magenta(&self) -> Painted<&T>
§fn bright_cyan(&self) -> Painted<&T>
fn bright_cyan(&self) -> Painted<&T>
§fn bright_white(&self) -> Painted<&T>
fn bright_white(&self) -> Painted<&T>
§fn bg(&self, value: Color) -> Painted<&T>
fn bg(&self, value: Color) -> Painted<&T>
Returns a styled value derived from self
with the background set to
value
.
This method should be used rarely. Instead, prefer to use color-specific
builder methods like on_red()
and
on_green()
, which have the same functionality but
are pithier.
Example
Set background color to red using fg()
:
use yansi::{Paint, Color};
painted.bg(Color::Red);
Set background color to red using on_red()
.
use yansi::Paint;
painted.on_red();
§fn on_primary(&self) -> Painted<&T>
fn on_primary(&self) -> Painted<&T>
§fn on_magenta(&self) -> Painted<&T>
fn on_magenta(&self) -> Painted<&T>
§fn on_bright_black(&self) -> Painted<&T>
fn on_bright_black(&self) -> Painted<&T>
§fn on_bright_red(&self) -> Painted<&T>
fn on_bright_red(&self) -> Painted<&T>
§fn on_bright_green(&self) -> Painted<&T>
fn on_bright_green(&self) -> Painted<&T>
§fn on_bright_yellow(&self) -> Painted<&T>
fn on_bright_yellow(&self) -> Painted<&T>
§fn on_bright_blue(&self) -> Painted<&T>
fn on_bright_blue(&self) -> Painted<&T>
§fn on_bright_magenta(&self) -> Painted<&T>
fn on_bright_magenta(&self) -> Painted<&T>
§fn on_bright_cyan(&self) -> Painted<&T>
fn on_bright_cyan(&self) -> Painted<&T>
§fn on_bright_white(&self) -> Painted<&T>
fn on_bright_white(&self) -> Painted<&T>
§fn attr(&self, value: Attribute) -> Painted<&T>
fn attr(&self, value: Attribute) -> Painted<&T>
Enables the styling [Attribute
] value
.
This method should be used rarely. Instead, prefer to use
attribute-specific builder methods like bold()
and
underline()
, which have the same functionality
but are pithier.
Example
Make text bold using attr()
:
use yansi::{Paint, Attribute};
painted.attr(Attribute::Bold);
Make text bold using using bold()
.
use yansi::Paint;
painted.bold();
§fn rapid_blink(&self) -> Painted<&T>
fn rapid_blink(&self) -> Painted<&T>
§fn quirk(&self, value: Quirk) -> Painted<&T>
fn quirk(&self, value: Quirk) -> Painted<&T>
Enables the yansi
[Quirk
] value
.
This method should be used rarely. Instead, prefer to use quirk-specific
builder methods like mask()
and
wrap()
, which have the same functionality but are
pithier.
Example
Enable wrapping using .quirk()
:
use yansi::{Paint, Quirk};
painted.quirk(Quirk::Wrap);
Enable wrapping using wrap()
.
use yansi::Paint;
painted.wrap();
§fn whenever(&self, value: Condition) -> Painted<&T>
fn whenever(&self, value: Condition) -> Painted<&T>
Conditionally enable styling based on whether the [Condition
] value
applies. Replaces any previous condition.
See the crate level docs for more details.
Example
Enable styling painted
only when both stdout
and stderr
are TTYs:
use yansi::{Paint, Condition};
painted.red().on_yellow().whenever(Condition::STDOUTERR_ARE_TTY);