[][src]Struct iri_string::types::RiFragmentStr

#[repr(transparent)]
pub struct RiFragmentStr<S> { /* fields omitted */ }

A borrowed slice of an IRI fragment (i.e. after the first # character).

This corresponds to ifragment rule in RFC 3987 (and fragment rule in RFC 3986). The rule for ifragment is *( ipchar / "/" / "?" ).

Valid values

This type can have an IRI fragment. Note that the IRI foo://bar/baz#qux has the fragment qux, not #qux.

assert!(IriFragmentStr::new("").is_ok());
assert!(IriFragmentStr::new("foo").is_ok());
assert!(IriFragmentStr::new("foo/bar").is_ok());
assert!(IriFragmentStr::new("/foo/bar").is_ok());
assert!(IriFragmentStr::new("//foo/bar").is_ok());
assert!(IriFragmentStr::new("https://user:pass@example.com:8080").is_ok());
assert!(IriFragmentStr::new("https://example.com/").is_ok());

Some characters and sequences cannot used in a fragment.

// `<` and `>` cannot directly appear in an IRI reference.
assert!(IriFragmentStr::new("<not allowed>").is_err());
// Broken percent encoding cannot appear in an IRI reference.
assert!(IriFragmentStr::new("%").is_err());
assert!(IriFragmentStr::new("%GG").is_err());
// Hash sign `#` cannot appear in an IRI fragment.
assert!(IriFragmentStr::new("#hash").is_err());

Methods

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

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

Creates a new string.

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.

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

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

Creates a new &RiFragmentStr from the fragment part prefixed by #.

Examples

assert!(IriFragmentStr::from_prefixed("#").is_ok());
assert!(IriFragmentStr::from_prefixed("#foo").is_ok());
assert!(IriFragmentStr::from_prefixed("#foo/bar").is_ok());
assert!(IriFragmentStr::from_prefixed("#/foo/bar").is_ok());
assert!(IriFragmentStr::from_prefixed("#//foo/bar").is_ok());
assert!(IriFragmentStr::from_prefixed("#https://user:pass@example.com:8080").is_ok());
assert!(IriFragmentStr::from_prefixed("#https://example.com/").is_ok());

// `<` and `>` cannot directly appear in an IRI.
assert!(IriFragmentStr::from_prefixed("#<not allowed>").is_err());
// Broken percent encoding cannot appear in an IRI.
assert!(IriFragmentStr::new("#%").is_err());
assert!(IriFragmentStr::new("#%GG").is_err());
// `#` prefix is expected.
assert!(IriFragmentStr::from_prefixed("").is_err());
assert!(IriFragmentStr::from_prefixed("foo").is_err());
// Hash sign `#` cannot appear in an IRI fragment.
assert!(IriFragmentStr::from_prefixed("##hash").is_err());

Trait Implementations

impl AsRef<RiFragmentStr<IriSpec>> for RiFragmentStr<UriSpec>[src]

impl AsRef<RiFragmentStr<IriSpec>> for RiFragmentString<UriSpec>[src]

impl<S: Spec> AsRef<RiFragmentStr<S>> for RiFragmentStr<S>[src]

impl<S: Spec> AsRef<RiFragmentStr<S>> for RiFragmentString<S>[src]

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

impl<S: Spec> Borrow<RiFragmentStr<S>> for RiFragmentString<S>[src]

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

impl<'de: 'a, 'a, S: 'de + Spec> Deserialize<'de> for &'a RiFragmentStr<S>[src]

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

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

impl<'_, S: Spec> From<&'_ RiFragmentStr<S>> for Arc<RiFragmentStr<S>>[src]

impl<'_, S: Spec> From<&'_ RiFragmentStr<S>> for Box<RiFragmentStr<S>>[src]

impl<'_, S: Spec> From<&'_ RiFragmentStr<S>> for Rc<RiFragmentStr<S>>[src]

impl<'_, S: Spec> From<&'_ RiFragmentStr<S>> for RiFragmentString<S>[src]

impl<'a, S: Spec> From<&'a RiFragmentStr<S>> for &'a str[src]

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

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

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

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

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

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

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

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

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

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

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

impl<S: Spec> PartialEq<RiFragmentStr<S>> for RiFragmentStr<S>[src]

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

impl<S: Spec> PartialOrd<RiFragmentStr<S>> for RiFragmentStr<S>[src]

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

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

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

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

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

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

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

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

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

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

impl<S: Spec> ToOwned for RiFragmentStr<S>[src]

type Owned = RiFragmentString<S>

The resulting type after obtaining ownership.

impl<'a, S: Spec> TryFrom<&'a str> for &'a RiFragmentStr<S>[src]

type Error = Error

The type returned in the event of a conversion error.

Auto Trait Implementations

impl<S> RefUnwindSafe for RiFragmentStr<S>

impl<S> Send for RiFragmentStr<S>

impl<S> Sync for RiFragmentStr<S>

impl<S> Unpin for RiFragmentStr<S>

impl<S> UnwindSafe for RiFragmentStr<S>

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> 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.