Struct uriparse::uri::RelativeReference[][src]

pub struct RelativeReference<'uri> { /* fields omitted */ }

A relative reference as defined in [RFC3986, Section 4.1].

Specifically, a relative reference is a URI reference without a scheme.

Methods

impl<'uri> RelativeReference<'uri>
[src]

Returns the authority, if present, of the relative reference.

Examples

use std::convert::TryFrom;

use uriparse::RelativeReference;

let reference = RelativeReference::try_from("//example.com/my/path").unwrap();
assert_eq!(reference.authority().unwrap().to_string(), "example.com");

Constructs a default builder for a relative reference.

This provides an alternative means of constructing a relative reference besides parsing and RelativeReference::from_parts.

Examples

use uriparse::RelativeReference;

let mut builder = RelativeReference::builder();
builder.path("/my/path").fragment(Some("fragment"));
let reference = builder.build().unwrap();
assert_eq!(reference.to_string(), "/my/path#fragment");

Constructs a new RelativeReference from the individual parts: authority, path, query, and fragment.

The lifetime used by the resulting value will be the lifetime of the part that is most restricted in scope.

Examples

use std::convert::TryFrom;

use uriparse::{Scheme, RelativeReference};

let reference = RelativeReference::from_parts(
    Some("example.com"),
    "/my/path",
    Some("query"),
    Some("fragment")
).unwrap();
assert_eq!(reference.to_string(), "//example.com/my/path?query#fragment");

Returns the fragment, if present, of the relative reference.

Examples

use std::convert::TryFrom;

use uriparse::RelativeReference;

let reference = RelativeReference::try_from("//example.com#fragment").unwrap();
assert_eq!(reference.fragment().unwrap(), "fragment");

Returns whether or not the relative reference has an authority component.

Examples

use std::convert::TryFrom;

use uriparse::RelativeReference;

let reference = RelativeReference::try_from("//example.com").unwrap();
assert!(reference.has_authority());

let reference = RelativeReference::try_from("").unwrap();
assert!(!reference.has_authority());

Returns whether or not the relative reference has a fragment component.

Examples

use std::convert::TryFrom;

use uriparse::RelativeReference;

let reference = RelativeReference::try_from("#test").unwrap();
assert!(reference.has_fragment());

let reference = RelativeReference::try_from("/").unwrap();
assert!(!reference.has_fragment());

Returns whether or not the relative reference has a password component.

Examples

use std::convert::TryFrom;

use uriparse::RelativeReference;

let reference = RelativeReference::try_from("//user:pass@127.0.0.1").unwrap();
assert!(reference.has_password());

let reference = RelativeReference::try_from("//user@127.0.0.1").unwrap();
assert!(!reference.has_password());

Returns whether or not the relative reference has a query component.

Examples

use std::convert::TryFrom;

use uriparse::RelativeReference;

let reference = RelativeReference::try_from("/?my=query").unwrap();
assert!(reference.has_query());

let reference = RelativeReference::try_from("/my/path").unwrap();
assert!(!reference.has_query());

Returns whether or not the relative reference has a username component.

Examples

use std::convert::TryFrom;

use uriparse::RelativeReference;

let reference = RelativeReference::try_from("//username@example.com").unwrap();
assert!(reference.has_username());

let reference = RelativeReference::try_from("").unwrap();
assert!(!reference.has_username());

Returns the host, if present, of the relative reference.

Examples

use std::convert::TryFrom;

use uriparse::RelativeReference;

let reference = RelativeReference::try_from("//username@example.com").unwrap();
assert_eq!(reference.host().unwrap().to_string(), "example.com");

Consumes the relative reference and converts it into a builder with the same values.

Examples

use std::convert::TryFrom;

use uriparse::{Fragment, Query, RelativeReference};

let reference = RelativeReference::try_from("//example.com/path?query#fragment").unwrap();
let mut builder = reference.into_builder();
builder.query(None::<Query>).fragment(None::<Fragment>);
let reference = builder.build().unwrap();
assert_eq!(reference.to_string(), "//example.com/path");

Converts the RelativeReference into an owned copy.

If you construct the relative reference from a source with a non-static lifetime, you may run into lifetime problems due to the way the struct is designed. Calling this function will ensure that the returned value has a static lifetime.

This is different from just cloning. Cloning the relative reference will just copy the references, and thus the lifetime will remain the same.

Consumes the RelativeReference and returns its parts: authority, path, query, and fragment.

Examples

use std::convert::TryFrom;

use uriparse::RelativeReference;

let reference = RelativeReference::try_from(
    "/my/path?my=query#fragment",
).unwrap();
let (authority, path, query, fragment) = reference.into_parts();

assert_eq!(authority, None);
assert_eq!(path, "/my/path");
assert_eq!(query.unwrap(), "my=query");
assert_eq!(fragment.unwrap(), "fragment");

Returns whether or not the relative reference is an absolute path reference.

A URI reference is an absolute path reference if it is a relative reference that begins with a single '/'.

Examples

use std::convert::TryFrom;

use uriparse::RelativeReference;

let reference = RelativeReference::try_from("/my/path").unwrap();
assert!(reference.is_absolute_path_reference());

Returns whether or not the relative reference is a network path reference.

A relative reference is a network path reference if it is a relative reference that begins with two '/'.

Examples

use std::convert::TryFrom;

use uriparse::RelativeReference;

let reference = RelativeReference::try_from("//example.com").unwrap();
assert!(reference.is_network_path_reference());

Returns whether or not the relative reference is a relative path reference.

A relative reference is a relative path reference if it is a relative reference that does not begin with a '/'.

Examples

use std::convert::TryFrom;

use uriparse::RelativeReference;

let reference = RelativeReference::try_from("my/path").unwrap();
assert!(reference.is_relative_path_reference());

Returns the path of the relative reference.

Examples

use std::convert::TryFrom;

use uriparse::RelativeReference;

let reference = RelativeReference::try_from("/my/path").unwrap();
assert_eq!(reference.path(), "/my/path");

Returns the password, if present, of the relative reference.

Usage of a password in URI and URI references is deprecated.

Examples

use std::convert::TryFrom;

use uriparse::RelativeReference;

let reference = RelativeReference::try_from("//user:pass@example.com").unwrap();
assert_eq!(reference.password().unwrap(), "pass");

Returns the port, if present, of the relative reference.

Examples

use std::convert::TryFrom;

use uriparse::RelativeReference;

let reference = RelativeReference::try_from("//example.com:8080/").unwrap();
assert_eq!(reference.port().unwrap(), 8080);

Returns the query, if present, of the relative reference.

Examples

use std::convert::TryFrom;

use uriparse::RelativeReference;

let reference = RelativeReference::try_from("?my=query").unwrap();
assert_eq!(reference.query().unwrap(), "my=query");

Returns the username, if present, of the relative reference.

Examples

use std::convert::TryFrom;

use uriparse::RelativeReference;

let reference = RelativeReference::try_from("//username@example.com").unwrap();
assert_eq!(reference.username().unwrap(), "username");

Trait Implementations

impl<'uri> Clone for RelativeReference<'uri>
[src]

Returns a copy of the value. Read more

Performs copy-assignment from source. Read more

impl<'uri> Debug for RelativeReference<'uri>
[src]

Formats the value using the given formatter. Read more

impl<'uri> Eq for RelativeReference<'uri>
[src]

impl<'uri> Hash for RelativeReference<'uri>
[src]

Feeds this value into the given [Hasher]. Read more

Feeds a slice of this type into the given [Hasher]. Read more

impl<'uri> PartialEq for RelativeReference<'uri>
[src]

This method tests for self and other values to be equal, and is used by ==. Read more

This method tests for !=.

impl<'uri> Display for RelativeReference<'uri>
[src]

Formats the value using the given formatter. Read more

impl<'uri> From<RelativeReference<'uri>> for String
[src]

Performs the conversion.

impl<'uri> TryFrom<&'uri [u8]> for RelativeReference<'uri>
[src]

🔬 This is a nightly-only experimental API. (try_from)

The type returned in the event of a conversion error.

🔬 This is a nightly-only experimental API. (try_from)

Performs the conversion.

impl<'uri> TryFrom<&'uri str> for RelativeReference<'uri>
[src]

🔬 This is a nightly-only experimental API. (try_from)

The type returned in the event of a conversion error.

🔬 This is a nightly-only experimental API. (try_from)

Performs the conversion.

impl<'uri> TryFrom<URIReference<'uri>> for RelativeReference<'uri>
[src]

🔬 This is a nightly-only experimental API. (try_from)

The type returned in the event of a conversion error.

🔬 This is a nightly-only experimental API. (try_from)

Performs the conversion.

Auto Trait Implementations

impl<'uri> Send for RelativeReference<'uri>

impl<'uri> Sync for RelativeReference<'uri>