Struct hyper::Url
[−]
[src]
pub struct Url { pub scheme: String, pub scheme_data: SchemeData, pub query: Option<String>, pub fragment: Option<String>, }
The parsed representation of an absolute URL.
Fields
scheme: String
The scheme (a.k.a. protocol) of the URL, in ASCII lower case.
scheme_data: SchemeData
The components of the URL whose representation depends on where the scheme is relative.
query: Option<String>
The query string of the URL.
None
if the ?
delimiter character was not part of the parsed input,
otherwise a possibly empty, percent-encoded string.
Percent encoded strings are within the ASCII range.
See also the query_pairs
, set_query_from_pairs
,
and lossy_percent_decode_query
methods.
fragment: Option<String>
The fragment identifier of the URL.
None
if the #
delimiter character was not part of the parsed input,
otherwise a possibly empty, percent-encoded string.
Percent encoded strings are within the ASCII range.
See also the lossy_percent_decode_fragment
method.
Methods
impl Url
fn parse(input: &str) -> Result<Url, ParseError>
Parse an URL with the default UrlParser
parameters.
In particular, relative URL references are parse errors since no base URL is provided.
fn from_file_path<P>(path: P) -> Result<Url, ()> where P: AsRef<Path>
Convert a file name as std::path::Path
into an URL in the file
scheme.
This returns Err
if the given path is not absolute
or, with a Windows path, if the prefix is not a disk prefix (e.g. C:
).
fn from_directory_path<P>(path: P) -> Result<Url, ()> where P: AsRef<Path>
Convert a directory name as std::path::Path
into an URL in the file
scheme.
This returns Err
if the given path is not absolute
or, with a Windows path, if the prefix is not a disk prefix (e.g. C:
).
Compared to from_file_path
, this adds an empty component to the path
(or, in terms of URL syntax, adds a trailing slash)
so that the entire path is considered when using this URL as a base URL.
For example:
"index.html"
parsed withUrl::from_directory_path(Path::new("/var/www"))
as the base URL isfile:///var/www/index.html
"index.html"
parsed withUrl::from_file_path(Path::new("/var/www/"))
as the base URL isfile:///var/index.html
, which might not be what was intended.
(Note that Path::new
removes any trailing slash.)
fn to_file_path(&self) -> Result<PathBuf, ()>
Assuming the URL is in the file
scheme or similar,
convert its path to an absolute std::path::Path
.
Note: This does not actually check the URL’s scheme
,
and may give nonsensical results for other schemes.
It is the user’s responsibility to check the URL’s scheme before calling this.
let path = url.to_file_path();
Returns Err
if the host is neither empty nor "localhost"
,
or if Path::new_opt()
returns None
.
(That is, if the percent-decoded path contains a NUL byte or,
for a Windows path, is not UTF-8.)
fn serialize(&self) -> String
Return the serialization of this URL as a string.
fn origin(&self) -> Origin
Return the origin of this URL (https://url.spec.whatwg.org/#origin)
fn serialize_no_fragment(&self) -> String
Return the serialization of this URL, without the fragment identifier, as a string
fn non_relative_scheme_data(&self) -> Option<&str>
If the URL is non-relative, return the string scheme data.
fn non_relative_scheme_data_mut(&mut self) -> Option<&mut String>
If the URL is non-relative, return a mutable reference to the string scheme data.
fn relative_scheme_data(&self) -> Option<&RelativeSchemeData>
If the URL is in a relative scheme, return the structured scheme data.
fn relative_scheme_data_mut(&mut self) -> Option<&mut RelativeSchemeData>
If the URL is in a relative scheme, return a mutable reference to the structured scheme data.
fn username(&self) -> Option<&str>
If the URL is in a relative scheme, return its username.
fn username_mut(&mut self) -> Option<&mut String>
If the URL is in a relative scheme, return a mutable reference to its username.
fn lossy_percent_decode_username(&self) -> Option<String>
Percent-decode the URL’s username, if any.
This is “lossy”: invalid UTF-8 percent-encoded byte sequences will be replaced � U+FFFD, the replacement character.
fn password(&self) -> Option<&str>
If the URL is in a relative scheme, return its password, if any.
fn password_mut(&mut self) -> Option<&mut String>
If the URL is in a relative scheme, return a mutable reference to its password, if any.
fn lossy_percent_decode_password(&self) -> Option<String>
Percent-decode the URL’s password, if any.
This is “lossy”: invalid UTF-8 percent-encoded byte sequences will be replaced � U+FFFD, the replacement character.
fn serialize_userinfo(&mut self) -> Option<String>
Serialize the URL's username and password, if any.
Format: "
fn host(&self) -> Option<&Host>
If the URL is in a relative scheme, return its structured host.
fn host_mut(&mut self) -> Option<&mut Host>
If the URL is in a relative scheme, return a mutable reference to its structured host.
fn domain(&self) -> Option<&str>
If the URL is in a relative scheme and its host is a domain, return the domain as a string.
fn domain_mut(&mut self) -> Option<&mut String>
If the URL is in a relative scheme and its host is a domain, return a mutable reference to the domain string.
fn serialize_host(&self) -> Option<String>
If the URL is in a relative scheme, serialize its host as a string.
A domain a returned as-is, an IPv6 address between [] square brackets.
fn port(&self) -> Option<u16>
If the URL is in a relative scheme and has a port number, return it.
fn port_mut(&mut self) -> Option<&mut Option<u16>>
If the URL is in a relative scheme, return a mutable reference to its port.
fn port_or_default(&self) -> Option<u16>
If the URL is in a relative scheme that is not a file-like, return its port number, even if it is the default.
fn path(&self) -> Option<&[String]>
If the URL is in a relative scheme, return its path components.
fn path_mut(&mut self) -> Option<&mut Vec<String>>
If the URL is in a relative scheme, return a mutable reference to its path components.
fn serialize_path(&self) -> Option<String>
If the URL is in a relative scheme, serialize its path as a string.
The returned string starts with a "/" slash, and components are separated by slashes. A trailing slash represents an empty last component.
fn query_pairs(&self) -> Option<Vec<(String, String)>>
Parse the URL’s query string, if any, as application/x-www-form-urlencoded
and return a vector of (key, value) pairs.
fn set_query_from_pairs<I, K, V>(&mut self, pairs: I) where I: IntoIterator, K: AsRef<str>, V: AsRef<str>, I::Item: Borrow<(K, V)>
Serialize an iterator of (key, value) pairs as application/x-www-form-urlencoded
and set it as the URL’s query string.
fn lossy_percent_decode_query(&self) -> Option<String>
Percent-decode the URL’s query string, if any.
This is “lossy”: invalid UTF-8 percent-encoded byte sequences will be replaced � U+FFFD, the replacement character.
fn lossy_percent_decode_fragment(&self) -> Option<String>
Percent-decode the URL’s fragment identifier, if any.
This is “lossy”: invalid UTF-8 percent-encoded byte sequences will be replaced � U+FFFD, the replacement character.
fn join(&self, input: &str) -> Result<Url, ParseError>
Join a path with a base URL.
Corresponds to the basic URL parser where self
is the given base URL.
Trait Implementations
impl Ord for Url
fn cmp(&self, __arg_0: &Url) -> Ordering
This method returns an Ordering
between self
and other
. Read more
impl PartialOrd<Url> for Url
fn partial_cmp(&self, __arg_0: &Url) -> Option<Ordering>
This method returns an ordering between self
and other
values if one exists. Read more
fn lt(&self, __arg_0: &Url) -> bool
This method tests less than (for self
and other
) and is used by the <
operator. Read more
fn le(&self, __arg_0: &Url) -> bool
This method tests less than or equal to (for self
and other
) and is used by the <=
operator. Read more
fn gt(&self, __arg_0: &Url) -> bool
This method tests greater than (for self
and other
) and is used by the >
operator. Read more
fn ge(&self, __arg_0: &Url) -> bool
This method tests greater than or equal to (for self
and other
) and is used by the >=
operator. Read more
impl Hash for Url
fn hash<__H>(&self, __arg_0: &mut __H) where __H: Hasher
Feeds this value into the state given, updating the hasher as necessary.
fn hash_slice<H>(data: &[Self], state: &mut H) where H: Hasher
1.3.0
Feeds a slice of this type into the state provided.
impl Debug for Url
fn fmt(&self, __arg_0: &mut Formatter) -> Result<(), Error>
Formats the value using the given formatter.
impl Clone for Url
fn clone(&self) -> Url
Returns a copy of the value. Read more
fn clone_from(&mut self, source: &Self)
1.0.0
Performs copy-assignment from source
. Read more
impl Eq for Url
impl PartialEq<Url> for Url
fn eq(&self, __arg_0: &Url) -> bool
This method tests for self
and other
values to be equal, and is used by ==
. Read more
fn ne(&self, __arg_0: &Url) -> bool
This method tests for !=
.
impl FromStr for Url
type Err = ParseError
The associated error which can be returned from parsing.
fn from_str(url: &str) -> Result<Url, ParseError>
Parses a string s
to return a value of this type. Read more
impl Encodable for Url
impl Decodable for Url
impl Display for Url
fn fmt(&self, formatter: &mut Formatter) -> Result<(), Error>
Formats the value using the given formatter.