[][src]Struct iri_string::types::RelativeIriStr

#[repr(transparent)]
pub struct RelativeIriStr(_);

A borrowed slice of a relative IRI.

This corresponds to irelative-ref rule in RFC 3987. This is irelative-part [ "?" iquery ] [ "#" fragment ]. In other words, this is roughly IriStr without scheme part.

Methods

impl RelativeIriStr[src]

pub fn new(s: &str) -> Result<&Self, Error>[src]

Creates a new &RelativeIriStr.

Examples

assert!(RelativeIriStr::new("foo").is_ok());
assert!(RelativeIriStr::new("foo/bar").is_ok());
assert!(RelativeIriStr::new("/foo").is_ok());
assert!(RelativeIriStr::new("//foo/bar").is_ok());
assert!(RelativeIriStr::new("?foo").is_ok());
assert!(RelativeIriStr::new("#foo").is_ok());
assert!(RelativeIriStr::new("foo/bar?baz#qux").is_ok());
// The first path component can have colon if the path is absolute.
assert!(RelativeIriStr::new("/foo:bar/").is_ok());
// Second or following path components can have colon.
assert!(RelativeIriStr::new("foo/bar://baz/").is_ok());

// Absolute IRI is not allowed.
assert!(RelativeIriStr::new("https://example.com/").is_err());
assert!(RelativeIriStr::new("foo:bar").is_err());
// `<` and `>` cannot directly appear in an IRI.
assert!(RelativeIriStr::new("<not allowed>").is_err());
// The first path component cannot have colon, if the path is not absolute.
assert!(RelativeIriStr::new("foo:").is_err());
assert!(RelativeIriStr::new("foo:/").is_err());
assert!(RelativeIriStr::new("foo://").is_err());
assert!(RelativeIriStr::new("foo:///").is_err());
assert!(RelativeIriStr::new("foo:////").is_err());
assert!(RelativeIriStr::new("foo://///").is_err());

pub fn as_str(&self) -> &str[src]

Returns &str.

Methods from Deref<Target = IriReferenceStr>

pub fn to_iri(&self) -> Result<&IriStr, &RelativeIriStr>[src]

Returns the string as &IriStr, if it is valid as an IRI.

If it is not an IRI, then &RelativeIriStr is returned as Err(_).

pub fn to_relative_iri(&self) -> Result<&RelativeIriStr, &IriStr>[src]

Returns the string as &RelativeIriStr, if it is valid as an IRI.

If it is not an IRI, then &IriStr is returned as Err(_).

pub fn resolve_against(&self, base: &AbsoluteIriStr) -> IriString[src]

Returns resolved IRI against the given base IRI, using strict resolver.

About reference resolution output example, see RFC 3986 section 5.4.

About resolver strictness, see RFC 3986 section 5.4.2:

Some parsers allow the scheme name to be present in a relative reference if it is the same as the base URI scheme. This is considered to be a loophole in prior specifications of partial URI RFC1630. Its use should be avoided but is allowed for backward compatibility.

--- https://tools.ietf.org/html/rfc3986#section-5.4.2

Usual users will want to use strict resolver.

pub fn resolve(&self, base: &AbsoluteIriStr) -> IriString[src]

Deprecated since 0.2.2:

Renamed to resolve_against()

Returns resolved IRI against the given base IRI, using strict resolver.

pub fn fragment(&self) -> Option<&IriFragmentStr>[src]

Returns the fragment part if exists.

A leading # character is truncated if the fragment part exists.

Examples

let iri = IriReferenceStr::new("foo://bar/baz?qux=quux#corge")?;
let fragment = IriFragmentStr::new("corge")?;
assert_eq!(iri.fragment(), Some(fragment));
let iri = IriReferenceStr::new("foo://bar/baz?qux=quux#")?;
let fragment = IriFragmentStr::new("")?;
assert_eq!(iri.fragment(), Some(fragment));
let iri = IriReferenceStr::new("foo://bar/baz?qux=quux")?;
assert_eq!(iri.fragment(), None);
let iri = IriReferenceStr::new("#foo")?;
let fragment = IriFragmentStr::new("foo")?;
assert_eq!(iri.fragment(), Some(fragment));
let iri = IriReferenceStr::new("")?;
assert_eq!(iri.fragment(), None);

pub fn as_str(&self) -> &str[src]

Returns &str.

Trait Implementations

impl AsRef<str> for RelativeIriStr where
    str: AsRef<str>, 

impl AsRef<RelativeIriStr> for RelativeIriStr

impl AsRef<RelativeIriStr> for RelativeIriString

impl AsRef<IriReferenceStr> for RelativeIriStr[src]

impl<'a> From<&'a RelativeIriStr> for Arc<RelativeIriStr> where
    Arc<str>: From<&'a str>, 

impl<'a> From<&'a RelativeIriStr> for Box<RelativeIriStr> where
    Box<str>: From<&'a str>, 

impl<'a> From<&'a RelativeIriStr> for Rc<RelativeIriStr> where
    Rc<str>: From<&'a str>, 

impl<'a> From<&'a RelativeIriStr> for &'a IriReferenceStr[src]

impl<'a> Default for &'a RelativeIriStr where
    &'a str: Default

impl Eq for RelativeIriStr[src]

impl Ord for RelativeIriStr[src]

impl PartialEq<RelativeIriStr> for RelativeIriStr[src]

impl<'_> PartialEq<&'_ RelativeIriStr> for RelativeIriStr

impl<'_> PartialEq<RelativeIriStr> for &'_ RelativeIriStr

impl<'_> PartialEq<Cow<'_, RelativeIriStr>> for RelativeIriStr

impl<'_> PartialEq<RelativeIriStr> for Cow<'_, RelativeIriStr>

impl PartialEq<str> for RelativeIriStr

impl PartialEq<RelativeIriStr> for str

impl<'_> PartialEq<&'_ str> for RelativeIriStr

impl<'_> PartialEq<RelativeIriStr> for &'_ str

impl<'_> PartialEq<str> for &'_ RelativeIriStr

impl<'_> PartialEq<&'_ RelativeIriStr> for str

impl<'_> PartialEq<Cow<'_, str>> for RelativeIriStr

impl<'_> PartialEq<RelativeIriStr> for Cow<'_, str>

impl<'_, '_> PartialEq<Cow<'_, str>> for &'_ RelativeIriStr

impl<'_, '_> PartialEq<&'_ RelativeIriStr> for Cow<'_, str>

impl PartialEq<RelativeIriStr> for RelativeIriString

impl PartialEq<RelativeIriString> for RelativeIriStr

impl<'_> PartialEq<&'_ RelativeIriStr> for RelativeIriString

impl<'_> PartialEq<RelativeIriString> for &'_ RelativeIriStr

impl PartialEq<IriReferenceStr> for RelativeIriStr[src]

impl PartialEq<RelativeIriStr> for IriReferenceStr[src]

impl<'_> PartialEq<&'_ IriReferenceStr> for RelativeIriStr[src]

impl<'_> PartialEq<RelativeIriStr> for &'_ IriReferenceStr[src]

impl PartialEq<IriReferenceString> for RelativeIriStr[src]

impl PartialEq<RelativeIriStr> for IriReferenceString[src]

impl<'_> PartialEq<Cow<'_, IriReferenceStr>> for RelativeIriStr[src]

impl<'_> PartialEq<RelativeIriStr> for Cow<'_, IriReferenceStr>[src]

impl<'_> PartialEq<IriReferenceStr> for &'_ RelativeIriStr[src]

impl<'_> PartialEq<&'_ RelativeIriStr> for IriReferenceStr[src]

impl<'_> PartialEq<IriReferenceString> for &'_ RelativeIriStr[src]

impl<'_> PartialEq<&'_ RelativeIriStr> for IriReferenceString[src]

impl<'_, '_> PartialEq<Cow<'_, IriReferenceStr>> for &'_ RelativeIriStr[src]

impl<'_, '_> PartialEq<&'_ RelativeIriStr> for Cow<'_, IriReferenceStr>[src]

impl PartialOrd<RelativeIriStr> for RelativeIriStr[src]

impl<'_> PartialOrd<&'_ RelativeIriStr> for RelativeIriStr

impl<'_> PartialOrd<RelativeIriStr> for &'_ RelativeIriStr

impl<'_> PartialOrd<Cow<'_, RelativeIriStr>> for RelativeIriStr

impl<'_> PartialOrd<RelativeIriStr> for Cow<'_, RelativeIriStr>

impl PartialOrd<str> for RelativeIriStr

impl PartialOrd<RelativeIriStr> for str

impl<'_> PartialOrd<&'_ str> for RelativeIriStr

impl<'_> PartialOrd<RelativeIriStr> for &'_ str

impl<'_> PartialOrd<str> for &'_ RelativeIriStr

impl<'_> PartialOrd<&'_ RelativeIriStr> for str

impl<'_> PartialOrd<Cow<'_, str>> for RelativeIriStr

impl<'_> PartialOrd<RelativeIriStr> for Cow<'_, str>

impl<'_, '_> PartialOrd<Cow<'_, str>> for &'_ RelativeIriStr

impl<'_, '_> PartialOrd<&'_ RelativeIriStr> for Cow<'_, str>

impl PartialOrd<RelativeIriStr> for RelativeIriString

impl PartialOrd<RelativeIriString> for RelativeIriStr

impl<'_> PartialOrd<&'_ RelativeIriStr> for RelativeIriString

impl<'_> PartialOrd<RelativeIriString> for &'_ RelativeIriStr

impl PartialOrd<IriReferenceStr> for RelativeIriStr[src]

impl PartialOrd<RelativeIriStr> for IriReferenceStr[src]

impl<'_> PartialOrd<&'_ IriReferenceStr> for RelativeIriStr[src]

impl<'_> PartialOrd<RelativeIriStr> for &'_ IriReferenceStr[src]

impl PartialOrd<IriReferenceString> for RelativeIriStr[src]

impl PartialOrd<RelativeIriStr> for IriReferenceString[src]

impl<'_> PartialOrd<Cow<'_, IriReferenceStr>> for RelativeIriStr[src]

impl<'_> PartialOrd<RelativeIriStr> for Cow<'_, IriReferenceStr>[src]

impl<'_> PartialOrd<IriReferenceStr> for &'_ RelativeIriStr[src]

impl<'_> PartialOrd<&'_ RelativeIriStr> for IriReferenceStr[src]

impl<'_> PartialOrd<IriReferenceString> for &'_ RelativeIriStr[src]

impl<'_> PartialOrd<&'_ RelativeIriStr> for IriReferenceString[src]

impl<'_, '_> PartialOrd<Cow<'_, IriReferenceStr>> for &'_ RelativeIriStr[src]

impl<'_, '_> PartialOrd<&'_ RelativeIriStr> for Cow<'_, IriReferenceStr>[src]

impl ToOwned for RelativeIriStr where
    String: From<&'a str>, 

type Owned = RelativeIriString

The resulting type after obtaining ownership.

impl Display for RelativeIriStr where
    str: Display

impl Debug for RelativeIriStr[src]

impl<'a> TryFrom<&'a str> for &'a RelativeIriStr

type Error = Error

The type returned in the event of a conversion error.

impl<'a> TryFrom<&'a IriReferenceStr> for &'a RelativeIriStr[src]

type Error = Error

The type returned in the event of a conversion error.

impl Deref for RelativeIriStr[src]

type Target = IriReferenceStr

The resulting type after dereferencing.

impl Hash for RelativeIriStr[src]

impl StructuralPartialEq for RelativeIriStr[src]

impl StructuralEq for RelativeIriStr[src]

impl Borrow<RelativeIriStr> for RelativeIriString

impl Serialize for RelativeIriStr[src]

impl<'de: 'a, 'a> Deserialize<'de> for &'a RelativeIriStr[src]

Auto Trait Implementations

Blanket Implementations

impl<T> ToOwned for T where
    T: Clone
[src]

type Owned = T

The resulting type after obtaining ownership.

impl<T> ToString for T where
    T: Display + ?Sized
[src]

impl<T> Borrow<T> for T where
    T: ?Sized
[src]

impl<T> BorrowMut<T> for T where
    T: ?Sized
[src]

impl<T> Any for T where
    T: 'static + ?Sized
[src]