[][src]Struct iri_string::types::RiReferenceString

pub struct RiReferenceString<S> { /* fields omitted */ }

An owned string of an absolute IRI possibly with fragment part.

This corresponds to IRI-reference rule in RFC 3987 (and URI-reference rule in RFC 3986). The rule for IRI-reference is IRI / irelative-ref. In other words, this is union of RiString and RiRelativeString.

For details, see the document for RiReferenceStr.

Enabled by alloc or std feature.

Methods

impl<S: Spec> RiReferenceString<S>[src]

pub fn shrink_to_fit(&mut self)[src]

Shrinks the capacity of the inner buffer to match its length.

impl<S: Spec> RiReferenceString<S>[src]

pub fn into_iri(self) -> Result<RiString<S>, RiRelativeString<S>>[src]

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

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

pub fn into_relative_iri(self) -> Result<RiRelativeString<S>, RiString<S>>[src]

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

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

pub fn set_fragment(&mut self, fragment: Option<&RiFragmentStr<S>>)[src]

Sets the fragment part to the given string.

Removes fragment part (and following # character) if None is given.

Methods from Deref<Target = RiReferenceStr<S>>

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

Returns &str.

pub fn len(&self) -> usize[src]

Returns the string length.

pub fn is_empty(&self) -> bool[src]

Returns whether the string is empty.

pub fn to_iri(&self) -> Result<&RiStr<S>, &RiRelativeStr<S>>[src]

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

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

pub fn to_relative_iri(&self) -> Result<&RiRelativeStr<S>, &RiStr<S>>[src]

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

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

pub fn resolve_against<'a>(
    &'a self,
    base: &RiAbsoluteStr<S>
) -> Cow<'a, RiStr<S>>
[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.

Enabled by alloc or std feature.

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

Returns the fragment part if exists.

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

Examples

If the IRI has a fragment part, Some(_) is returned.

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")?;
let fragment = IriFragmentStr::new("foo")?;
assert_eq!(iri.fragment(), Some(fragment));

When the fragment part exists but is empty string, Some(_) is returned.

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

If the IRI has no fragment, None is returned.

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

Trait Implementations

impl AsRef<RiReferenceStr<IriSpec>> for RiReferenceString<UriSpec>[src]

impl<S: Spec> AsRef<RiReferenceStr<S>> for RiReferenceString<S>[src]

impl<S: Spec> AsRef<str> for RiReferenceString<S>[src]

impl<S: Spec> Borrow<RiReferenceStr<S>> for RiReferenceString<S>[src]

impl<S: Spec> Borrow<str> for RiReferenceString<S>[src]

impl<S: Spec> Clone for RiReferenceString<S>[src]

impl<S: Spec> Debug for RiReferenceString<S>[src]

impl<S: Spec> Deref for RiReferenceString<S>[src]

type Target = RiReferenceStr<S>

The resulting type after dereferencing.

impl<'de, S: Spec> Deserialize<'de> for RiReferenceString<S>[src]

impl<S: Spec> Display for RiReferenceString<S>[src]

impl<S: Spec> Eq for RiReferenceString<S>[src]

impl<'_, S: Spec> From<&'_ RiReferenceStr<S>> for RiReferenceString<S>[src]

impl<S: Spec> From<RiAbsoluteString<S>> for RiReferenceString<S>[src]

impl<S: Spec> From<RiReferenceString<S>> for String[src]

impl<S: Spec> From<RiRelativeString<S>> for RiReferenceString<S>[src]

impl<S: Spec> From<RiString<S>> for RiReferenceString<S>[src]

impl<S: Spec> FromStr for RiReferenceString<S>[src]

type Err = Error

The associated error which can be returned from parsing.

impl<S: Spec> Hash for RiReferenceString<S>[src]

impl<S: Spec> Ord for RiReferenceString<S>[src]

impl<'_, S: Spec, T: Spec> PartialEq<&'_ RiAbsoluteStr<S>> for RiReferenceString<T>[src]

impl<'_, S: Spec, T: Spec> PartialEq<&'_ RiReferenceStr<S>> for RiReferenceString<T>[src]

impl<'_, S: Spec, T: Spec> PartialEq<&'_ RiRelativeStr<S>> for RiReferenceString<T>[src]

impl<'_, S: Spec, T: Spec> PartialEq<&'_ RiStr<S>> for RiReferenceString<T>[src]

impl<'_, S: Spec> PartialEq<&'_ str> for RiReferenceString<S>[src]

impl<'_, S: Spec, T: Spec> PartialEq<Cow<'_, RiAbsoluteStr<S>>> for RiReferenceString<T>[src]

impl<'_, S: Spec, T: Spec> PartialEq<Cow<'_, RiReferenceStr<S>>> for RiReferenceString<T>[src]

impl<'_, S: Spec, T: Spec> PartialEq<Cow<'_, RiRelativeStr<S>>> for RiReferenceString<T>[src]

impl<'_, S: Spec, T: Spec> PartialEq<Cow<'_, RiStr<S>>> for RiReferenceString<T>[src]

impl<'_, S: Spec> PartialEq<Cow<'_, str>> for RiReferenceString<S>[src]

impl<S: Spec, T: Spec> PartialEq<RiAbsoluteStr<S>> for RiReferenceString<T>[src]

impl<S: Spec, T: Spec> PartialEq<RiAbsoluteString<S>> for RiReferenceString<T>[src]

impl<S: Spec, T: Spec> PartialEq<RiReferenceStr<S>> for RiReferenceString<T>[src]

impl<S: Spec> PartialEq<RiReferenceString<S>> for str[src]

impl<'_, S: Spec> PartialEq<RiReferenceString<S>> for &'_ str[src]

impl<'_, S: Spec> PartialEq<RiReferenceString<S>> for Cow<'_, str>[src]

impl<S: Spec> PartialEq<RiReferenceString<S>> for String[src]

impl<S: Spec, T: Spec> PartialEq<RiReferenceString<T>> for RiAbsoluteStr<S>[src]

impl<'_, S: Spec, T: Spec> PartialEq<RiReferenceString<T>> for &'_ RiAbsoluteStr<S>[src]

impl<'_, S: Spec, T: Spec> PartialEq<RiReferenceString<T>> for &'_ RiReferenceStr<S>[src]

impl<'_, S: Spec, T: Spec> PartialEq<RiReferenceString<T>> for Cow<'_, RiReferenceStr<S>>[src]

impl<S: Spec, T: Spec> PartialEq<RiReferenceString<T>> for RiRelativeStr<S>[src]

impl<'_, S: Spec, T: Spec> PartialEq<RiReferenceString<T>> for &'_ RiRelativeStr<S>[src]

impl<'_, S: Spec, T: Spec> PartialEq<RiReferenceString<T>> for Cow<'_, RiRelativeStr<S>>[src]

impl<S: Spec, T: Spec> PartialEq<RiReferenceString<T>> for RiRelativeString<S>[src]

impl<'_, S: Spec, T: Spec> PartialEq<RiReferenceString<T>> for Cow<'_, RiAbsoluteStr<S>>[src]

impl<S: Spec, T: Spec> PartialEq<RiReferenceString<T>> for RiAbsoluteString<S>[src]

impl<S: Spec, T: Spec> PartialEq<RiReferenceString<T>> for RiStr<S>[src]

impl<'_, S: Spec, T: Spec> PartialEq<RiReferenceString<T>> for &'_ RiStr<S>[src]

impl<'_, S: Spec, T: Spec> PartialEq<RiReferenceString<T>> for Cow<'_, RiStr<S>>[src]

impl<S: Spec, T: Spec> PartialEq<RiReferenceString<T>> for RiString<S>[src]

impl<S: Spec, T: Spec> PartialEq<RiReferenceString<T>> for RiReferenceString<S>[src]

impl<S: Spec, T: Spec> PartialEq<RiReferenceString<T>> for RiReferenceStr<S>[src]

impl<S: Spec, T: Spec> PartialEq<RiRelativeStr<S>> for RiReferenceString<T>[src]

impl<S: Spec, T: Spec> PartialEq<RiRelativeString<S>> for RiReferenceString<T>[src]

impl<S: Spec, T: Spec> PartialEq<RiStr<S>> for RiReferenceString<T>[src]

impl<S: Spec, T: Spec> PartialEq<RiString<S>> for RiReferenceString<T>[src]

impl<S: Spec> PartialEq<String> for RiReferenceString<S>[src]

impl<S: Spec> PartialEq<str> for RiReferenceString<S>[src]

impl<'_, S: Spec, T: Spec> PartialOrd<&'_ RiAbsoluteStr<S>> for RiReferenceString<T>[src]

impl<'_, S: Spec, T: Spec> PartialOrd<&'_ RiReferenceStr<S>> for RiReferenceString<T>[src]

impl<'_, S: Spec, T: Spec> PartialOrd<&'_ RiRelativeStr<S>> for RiReferenceString<T>[src]

impl<'_, S: Spec, T: Spec> PartialOrd<&'_ RiStr<S>> for RiReferenceString<T>[src]

impl<'_, S: Spec> PartialOrd<&'_ str> for RiReferenceString<S>[src]

impl<'_, S: Spec, T: Spec> PartialOrd<Cow<'_, RiAbsoluteStr<S>>> for RiReferenceString<T>[src]

impl<'_, S: Spec, T: Spec> PartialOrd<Cow<'_, RiReferenceStr<S>>> for RiReferenceString<T>[src]

impl<'_, S: Spec, T: Spec> PartialOrd<Cow<'_, RiRelativeStr<S>>> for RiReferenceString<T>[src]

impl<'_, S: Spec, T: Spec> PartialOrd<Cow<'_, RiStr<S>>> for RiReferenceString<T>[src]

impl<'_, S: Spec> PartialOrd<Cow<'_, str>> for RiReferenceString<S>[src]

impl<S: Spec, T: Spec> PartialOrd<RiAbsoluteStr<S>> for RiReferenceString<T>[src]

impl<S: Spec, T: Spec> PartialOrd<RiAbsoluteString<S>> for RiReferenceString<T>[src]

impl<S: Spec, T: Spec> PartialOrd<RiReferenceStr<S>> for RiReferenceString<T>[src]

impl<S: Spec> PartialOrd<RiReferenceString<S>> for str[src]

impl<'_, S: Spec> PartialOrd<RiReferenceString<S>> for &'_ str[src]

impl<'_, S: Spec> PartialOrd<RiReferenceString<S>> for Cow<'_, str>[src]

impl<S: Spec> PartialOrd<RiReferenceString<S>> for String[src]

impl<S: Spec, T: Spec> PartialOrd<RiReferenceString<T>> for RiAbsoluteStr<S>[src]

impl<'_, S: Spec, T: Spec> PartialOrd<RiReferenceString<T>> for &'_ RiAbsoluteStr<S>[src]

impl<'_, S: Spec, T: Spec> PartialOrd<RiReferenceString<T>> for &'_ RiReferenceStr<S>[src]

impl<'_, S: Spec, T: Spec> PartialOrd<RiReferenceString<T>> for Cow<'_, RiReferenceStr<S>>[src]

impl<S: Spec, T: Spec> PartialOrd<RiReferenceString<T>> for RiRelativeStr<S>[src]

impl<'_, S: Spec, T: Spec> PartialOrd<RiReferenceString<T>> for &'_ RiRelativeStr<S>[src]

impl<'_, S: Spec, T: Spec> PartialOrd<RiReferenceString<T>> for Cow<'_, RiRelativeStr<S>>[src]

impl<S: Spec, T: Spec> PartialOrd<RiReferenceString<T>> for RiRelativeString<S>[src]

impl<'_, S: Spec, T: Spec> PartialOrd<RiReferenceString<T>> for Cow<'_, RiAbsoluteStr<S>>[src]

impl<S: Spec, T: Spec> PartialOrd<RiReferenceString<T>> for RiAbsoluteString<S>[src]

impl<S: Spec, T: Spec> PartialOrd<RiReferenceString<T>> for RiStr<S>[src]

impl<'_, S: Spec, T: Spec> PartialOrd<RiReferenceString<T>> for &'_ RiStr<S>[src]

impl<'_, S: Spec, T: Spec> PartialOrd<RiReferenceString<T>> for Cow<'_, RiStr<S>>[src]

impl<S: Spec, T: Spec> PartialOrd<RiReferenceString<T>> for RiString<S>[src]

impl<S: Spec, T: Spec> PartialOrd<RiReferenceString<T>> for RiReferenceString<S>[src]

impl<S: Spec, T: Spec> PartialOrd<RiReferenceString<T>> for RiReferenceStr<S>[src]

impl<S: Spec, T: Spec> PartialOrd<RiRelativeStr<S>> for RiReferenceString<T>[src]

impl<S: Spec, T: Spec> PartialOrd<RiRelativeString<S>> for RiReferenceString<T>[src]

impl<S: Spec, T: Spec> PartialOrd<RiStr<S>> for RiReferenceString<T>[src]

impl<S: Spec, T: Spec> PartialOrd<RiString<S>> for RiReferenceString<T>[src]

impl<S: Spec> PartialOrd<String> for RiReferenceString<S>[src]

impl<S: Spec> PartialOrd<str> for RiReferenceString<S>[src]

impl<S> Serialize for RiReferenceString<S>[src]

impl<'_, S: Spec> TryFrom<&'_ str> for RiReferenceString<S>[src]

type Error = Error

The type returned in the event of a conversion error.

impl<S: Spec> TryFrom<RiReferenceString<S>> for RiAbsoluteString<S>[src]

type Error = CreationError<RiReferenceString<S>>

The type returned in the event of a conversion error.

impl<S: Spec> TryFrom<RiReferenceString<S>> for RiString<S>[src]

type Error = CreationError<RiReferenceString<S>>

The type returned in the event of a conversion error.

impl<S: Spec> TryFrom<RiReferenceString<S>> for RiRelativeString<S>[src]

type Error = CreationError<RiReferenceString<S>>

The type returned in the event of a conversion error.

impl<S: Spec> TryFrom<String> for RiReferenceString<S>[src]

type Error = CreationError<String>

The type returned in the event of a conversion error.

Auto Trait Implementations

Blanket Implementations

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

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

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

impl<T> DeserializeOwned for T where
    T: Deserialize<'de>, 
[src]

impl<T> From<T> for T[src]

impl<T, U> Into<U> for T where
    U: From<T>, 
[src]

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, U> TryFrom<U> for T where
    U: Into<T>, 
[src]

type Error = Infallible

The type returned in the event of a conversion error.

impl<T, U> TryInto<U> for T where
    U: TryFrom<T>, 
[src]

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.