Struct iref::IriRef [−][src]
pub struct IriRef<'a> { /* fields omitted */ }
Expand description
IRI-reference slice.
Wrapper around a borrowed bytes slice representing an IRI-reference.
An IRI-reference can be seen as an Iri
with an optional Scheme
.
IRI-references are resolved against a base IRI into a proper IRI using
the Reference Resolution Algorithm provided
by the resolved
method.
Example
let base_iri = Iri::new("http://a/b/c/d;p?q")?;
let mut iri_ref = IriRefBuf::new("g;x=1/../y")?;
assert_eq!(iri_ref.resolved(base_iri), "http://a/b/c/y");
Implementations
Create a new IRI-reference slice from a bytes slice.
This may fail if the source slice is not UTF-8 encoded, or if is not a valid IRI-reference.
Create a new IRI-reference from a string.
This replaces a std::str::FromStr
implementation as the trait is
incompatiple with the result storing the input which IriRef
does.
Get the underlying parsing data.
Build an IRI reference from a slice and parsing data.
Safety
This is unsafe since the input slice is not checked against the given parsing data.
The user must ensure that data
is a correct IRI reference described by p
.
Returns a reference to the byte representation of the IRI-reference.
Convert the IRI-refrence into its underlying bytes slice.
Get the IRI-reference as a percent-encoded string slice.
Convert the IRI-reference into a percent-encoded string slice.
Get the scheme of the IRI-reference.
The scheme is located at the very begining of the IRI-reference and delimited by an ending
:
.
Example
assert_eq!(IriRef::new("foo://example.com:8042").unwrap().scheme().unwrap(), "foo");
assert_eq!(IriRef::new("//example.com:8042").unwrap().scheme(), None);
Get the authority of the IRI-reference.
The authority is delimited by the //
string, after the scheme.
Example
assert_eq!(IriRef::new("foo://example.com:8042").unwrap().authority().unwrap().host(), "example.com");
assert_eq!(IriRef::new("foo:").unwrap().authority(), None);
Get the path of the IRI-reference.
The path is located just after the authority. It is always defined, even if empty.
Example
assert_eq!(IriRef::new("foo:/a/b/c?query").unwrap().path(), "/a/b/c");
assert!(IriRef::new("foo:#fragment").unwrap().path().is_empty());
Get the query of the IRI-reference.
The query part is delimited by the ?
character after the path.
Example
assert_eq!(IriRef::new("//example.org?query").unwrap().query().unwrap(), "query");
assert!(IriRef::new("//example.org/foo/bar#fragment").unwrap().query().is_none());
Get the fragment of the IRI-reference.
The fragment part is delimited by the #
character after the query.
Example
assert_eq!(IriRef::new("//example.org#foo").unwrap().fragment().unwrap(), "foo");
assert!(IriRef::new("//example.org").unwrap().fragment().is_none());
Convert the IRI-reference into an IRI, if possible.
An IRI-reference is a valid IRI only if it has a defined Scheme
.
Resolve the IRI reference against the given base IRI.
Return the resolved IRI.
See the IriRefBuf::resolve
method for more informations about the resolution process.
Get the suffix of this IRI reference, if any, with regard to the given prefix IRI reference..
Returns Some((suffix, query, fragment))
if this IRI reference is of the form
prefix/suffix?query#fragment
where prefix
is given as parameter.
Returns None
otherwise.
If the suffix
scheme or authority is different from this path, it will return None
.
See Path::suffix
for more details.
The IRI reference without the file name, query and fragment.
Example
let a = IriRef::new("https://crates.io/crates/iref?query#fragment").unwrap();
let b = IriRef::new("https://crates.io/crates/iref/?query#fragment").unwrap();
assert_eq!(a.base(), "https://crates.io/crates/");
assert_eq!(b.base(), "https://crates.io/crates/iref/")
Get this IRI reference relatively to the given one.
Example
let a = IriRef::new("https://crates.io/").unwrap();
let b = IriRef::new("https://crates.io/crates/iref").unwrap();
let c = IriRef::new("https://crates.io/crates/json-ld").unwrap();
assert_eq!(b.relative_to(a), "crates/iref");
assert_eq!(a.relative_to(b), "../");
assert_eq!(b.relative_to(c), "iref");
assert_eq!(c.relative_to(b), "json-ld");
Trait Implementations
This method returns an ordering between self
and other
values if one exists. Read more
This method tests less than (for self
and other
) and is used by the <
operator. Read more
This method tests less than or equal to (for self
and other
) and is used by the <=
operator. Read more
This method tests greater than (for self
and other
) and is used by the >
operator. Read more
This method returns an ordering between self
and other
values if one exists. Read more
This method tests less than (for self
and other
) and is used by the <
operator. Read more
This method tests less than or equal to (for self
and other
) and is used by the <=
operator. Read more
This method tests greater than (for self
and other
) and is used by the >
operator. Read more
This method returns an ordering between self
and other
values if one exists. Read more
This method tests less than (for self
and other
) and is used by the <
operator. Read more
This method tests less than or equal to (for self
and other
) and is used by the <=
operator. Read more
This method tests greater than (for self
and other
) and is used by the >
operator. Read more
This method returns an ordering between self
and other
values if one exists. Read more
This method tests less than (for self
and other
) and is used by the <
operator. Read more
This method tests less than or equal to (for self
and other
) and is used by the <=
operator. Read more
This method tests greater than (for self
and other
) and is used by the >
operator. Read more
This method returns an ordering between self
and other
values if one exists. Read more
This method tests less than (for self
and other
) and is used by the <
operator. Read more
This method tests less than or equal to (for self
and other
) and is used by the <=
operator. Read more
This method tests greater than (for self
and other
) and is used by the >
operator. Read more
This method returns an ordering between self
and other
values if one exists. Read more
This method tests less than (for self
and other
) and is used by the <
operator. Read more
This method tests less than or equal to (for self
and other
) and is used by the <=
operator. Read more
This method tests greater than (for self
and other
) and is used by the >
operator. Read more
This method returns an ordering between self
and other
values if one exists. Read more
This method tests less than (for self
and other
) and is used by the <
operator. Read more
This method tests less than or equal to (for self
and other
) and is used by the <=
operator. Read more
This method tests greater than (for self
and other
) and is used by the >
operator. Read more
Auto Trait Implementations
impl<'a> RefUnwindSafe for IriRef<'a>
impl<'a> UnwindSafe for IriRef<'a>
Blanket Implementations
Mutably borrows from an owned value. Read more