Struct iri_string::template::UriTemplateStr
source · pub struct UriTemplateStr { /* private fields */ }
Expand description
A borrowed slice of a URI template.
URI Template is defined by RFC 6570.
Note that “URI Template” can also be used for IRI.
§Valid values
This type can have a URI template string.
§Applied errata
Errata ID 6937 is applied, so single quotes are allowed to appear in an URI template.
use iri_string::template::UriTemplateStr;
let template = UriTemplateStr::new("'quoted'")?;
Implementations§
source§impl UriTemplateStr
impl UriTemplateStr
sourcepub fn new(s: &str) -> Result<&Self, Error>
pub fn new(s: &str) -> Result<&Self, Error>
Creates a new string.
§Examples
use iri_string::template::UriTemplateStr;
let template = UriTemplateStr::new("/users/{username}")?;
sourcepub unsafe fn new_unchecked(s: &str) -> &Self
pub unsafe fn new_unchecked(s: &str) -> &Self
Creates a new string without validation.
This does not validate the given string, so it is caller’s responsibility to ensure the given string is valid.
§Safety
The given string must be syntactically valid as Self
type.
If not, any use of the returned value or the call of this
function itself may result in undefined behavior.
sourcepub fn as_str(&self) -> &str
pub fn as_str(&self) -> &str
Returns the template as a plain &str
.
§Examples
use iri_string::template::UriTemplateStr;
let template = UriTemplateStr::new("/users/{username}")?;
assert_eq!(template.as_str(), "/users/{username}");
source§impl UriTemplateStr
impl UriTemplateStr
sourcepub fn expand<'a, S: Spec, C: Context>(
&'a self,
context: &'a C
) -> Result<Expanded<'a, S, C>, Error>
pub fn expand<'a, S: Spec, C: Context>( &'a self, context: &'a C ) -> Result<Expanded<'a, S, C>, Error>
Expands the template with the given context.
§Examples
use iri_string::spec::UriSpec;
use iri_string::template::UriTemplateStr;
use iri_string::template::simple_context::SimpleContext;
let mut context = SimpleContext::new();
context.insert("username", "foo");
let template = UriTemplateStr::new("/users/{username}")?;
let expanded = template.expand::<UriSpec, _>(&context)?;
assert_eq!(
expanded.to_string(),
"/users/foo"
);
You can control allowed characters in the output by changing spec type.
use iri_string::spec::{IriSpec, UriSpec};
use iri_string::template::UriTemplateStr;
use iri_string::template::simple_context::SimpleContext;
let mut context = SimpleContext::new();
context.insert("alpha", "\u{03B1}");
let template = UriTemplateStr::new("{?alpha}")?;
assert_eq!(
template.expand::<UriSpec, _>(&context)?.to_string(),
"?alpha=%CE%B1",
"a URI cannot contain Unicode alpha (U+03B1), so it should be escaped"
);
assert_eq!(
template.expand::<IriSpec, _>(&context)?.to_string(),
"?alpha=\u{03B1}",
"an IRI can contain Unicode alpha (U+03B1), so it written as is"
);
Trait Implementations§
source§impl AsRef<UriTemplateStr> for UriTemplateStr
impl AsRef<UriTemplateStr> for UriTemplateStr
source§fn as_ref(&self) -> &UriTemplateStr
fn as_ref(&self) -> &UriTemplateStr
Converts this type into a shared reference of the (usually inferred) input type.
source§impl AsRef<UriTemplateStr> for UriTemplateString
impl AsRef<UriTemplateStr> for UriTemplateString
source§fn as_ref(&self) -> &UriTemplateStr
fn as_ref(&self) -> &UriTemplateStr
Converts this type into a shared reference of the (usually inferred) input type.
source§impl AsRef<str> for UriTemplateStr
impl AsRef<str> for UriTemplateStr
source§impl Borrow<UriTemplateStr> for UriTemplateString
impl Borrow<UriTemplateStr> for UriTemplateString
source§fn borrow(&self) -> &UriTemplateStr
fn borrow(&self) -> &UriTemplateStr
Immutably borrows from an owned value. Read more
source§impl Debug for UriTemplateStr
impl Debug for UriTemplateStr
source§impl<'a, 'de: 'a> Deserialize<'de> for &'a UriTemplateStr
Available on crate feature serde
only.
impl<'a, 'de: 'a> Deserialize<'de> for &'a UriTemplateStr
Available on crate feature
serde
only.source§fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>where
D: Deserializer<'de>,
fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>where
D: Deserializer<'de>,
Deserialize this value from the given Serde deserializer. Read more
source§impl Display for UriTemplateStr
impl Display for UriTemplateStr
source§impl<'a> From<&'a UriTemplateStr> for &'a str
impl<'a> From<&'a UriTemplateStr> for &'a str
source§fn from(s: &'a UriTemplateStr) -> &'a str
fn from(s: &'a UriTemplateStr) -> &'a str
Converts to this type from the input type.
source§impl From<&UriTemplateStr> for Arc<UriTemplateStr>
impl From<&UriTemplateStr> for Arc<UriTemplateStr>
source§fn from(s: &UriTemplateStr) -> Self
fn from(s: &UriTemplateStr) -> Self
Converts to this type from the input type.
source§impl From<&UriTemplateStr> for Box<UriTemplateStr>
impl From<&UriTemplateStr> for Box<UriTemplateStr>
source§fn from(s: &UriTemplateStr) -> Self
fn from(s: &UriTemplateStr) -> Self
Converts to this type from the input type.
source§impl<'a> From<&'a UriTemplateStr> for Cow<'a, UriTemplateStr>
impl<'a> From<&'a UriTemplateStr> for Cow<'a, UriTemplateStr>
source§fn from(s: &'a UriTemplateStr) -> Self
fn from(s: &'a UriTemplateStr) -> Self
Converts to this type from the input type.
source§impl From<&UriTemplateStr> for Rc<UriTemplateStr>
impl From<&UriTemplateStr> for Rc<UriTemplateStr>
source§fn from(s: &UriTemplateStr) -> Self
fn from(s: &UriTemplateStr) -> Self
Converts to this type from the input type.
source§impl From<&UriTemplateStr> for UriTemplateString
impl From<&UriTemplateStr> for UriTemplateString
source§fn from(s: &UriTemplateStr) -> Self
fn from(s: &UriTemplateStr) -> Self
Converts to this type from the input type.
source§impl From<UriTemplateString> for Box<UriTemplateStr>
impl From<UriTemplateString> for Box<UriTemplateStr>
source§fn from(s: UriTemplateString) -> Box<UriTemplateStr>
fn from(s: UriTemplateString) -> Box<UriTemplateStr>
Converts to this type from the input type.
source§impl Hash for UriTemplateStr
impl Hash for UriTemplateStr
source§impl Ord for UriTemplateStr
impl Ord for UriTemplateStr
source§impl PartialEq<&UriTemplateStr> for Cow<'_, str>
impl PartialEq<&UriTemplateStr> for Cow<'_, str>
source§fn eq(&self, o: &&UriTemplateStr) -> bool
fn eq(&self, o: &&UriTemplateStr) -> bool
This method tests for
self
and other
values to be equal, and is used
by ==
.source§impl PartialEq<&UriTemplateStr> for str
impl PartialEq<&UriTemplateStr> for str
source§fn eq(&self, o: &&UriTemplateStr) -> bool
fn eq(&self, o: &&UriTemplateStr) -> bool
This method tests for
self
and other
values to be equal, and is used
by ==
.source§impl PartialEq<&str> for UriTemplateStr
impl PartialEq<&str> for UriTemplateStr
source§impl PartialEq<Cow<'_, str>> for &UriTemplateStr
impl PartialEq<Cow<'_, str>> for &UriTemplateStr
source§impl PartialEq<Cow<'_, str>> for UriTemplateStr
impl PartialEq<Cow<'_, str>> for UriTemplateStr
source§impl PartialEq<UriTemplateStr> for &str
impl PartialEq<UriTemplateStr> for &str
source§fn eq(&self, o: &UriTemplateStr) -> bool
fn eq(&self, o: &UriTemplateStr) -> bool
This method tests for
self
and other
values to be equal, and is used
by ==
.source§impl PartialEq<UriTemplateStr> for Cow<'_, str>
impl PartialEq<UriTemplateStr> for Cow<'_, str>
source§fn eq(&self, o: &UriTemplateStr) -> bool
fn eq(&self, o: &UriTemplateStr) -> bool
This method tests for
self
and other
values to be equal, and is used
by ==
.source§impl PartialEq<UriTemplateStr> for str
impl PartialEq<UriTemplateStr> for str
source§fn eq(&self, o: &UriTemplateStr) -> bool
fn eq(&self, o: &UriTemplateStr) -> bool
This method tests for
self
and other
values to be equal, and is used
by ==
.source§impl PartialEq<str> for &UriTemplateStr
impl PartialEq<str> for &UriTemplateStr
source§impl PartialEq<str> for UriTemplateStr
impl PartialEq<str> for UriTemplateStr
source§impl PartialEq for UriTemplateStr
impl PartialEq for UriTemplateStr
source§fn eq(&self, other: &UriTemplateStr) -> bool
fn eq(&self, other: &UriTemplateStr) -> bool
This method tests for
self
and other
values to be equal, and is used
by ==
.source§impl PartialOrd<&UriTemplateStr> for Cow<'_, str>
impl PartialOrd<&UriTemplateStr> for Cow<'_, str>
source§fn partial_cmp(&self, o: &&UriTemplateStr) -> Option<Ordering>
fn partial_cmp(&self, o: &&UriTemplateStr) -> Option<Ordering>
1.0.0 · source§fn le(&self, other: &Rhs) -> bool
fn le(&self, other: &Rhs) -> bool
This method tests less than or equal to (for
self
and other
) and is used by the <=
operator. Read moresource§impl PartialOrd<&UriTemplateStr> for str
impl PartialOrd<&UriTemplateStr> for str
source§fn partial_cmp(&self, o: &&UriTemplateStr) -> Option<Ordering>
fn partial_cmp(&self, o: &&UriTemplateStr) -> Option<Ordering>
1.0.0 · source§fn le(&self, other: &Rhs) -> bool
fn le(&self, other: &Rhs) -> bool
This method tests less than or equal to (for
self
and other
) and is used by the <=
operator. Read moresource§impl PartialOrd<&str> for UriTemplateStr
impl PartialOrd<&str> for UriTemplateStr
1.0.0 · source§fn le(&self, other: &Rhs) -> bool
fn le(&self, other: &Rhs) -> bool
This method tests less than or equal to (for
self
and other
) and is used by the <=
operator. Read moresource§impl PartialOrd<Cow<'_, str>> for &UriTemplateStr
impl PartialOrd<Cow<'_, str>> for &UriTemplateStr
1.0.0 · source§fn le(&self, other: &Rhs) -> bool
fn le(&self, other: &Rhs) -> bool
This method tests less than or equal to (for
self
and other
) and is used by the <=
operator. Read moresource§impl PartialOrd<Cow<'_, str>> for UriTemplateStr
impl PartialOrd<Cow<'_, str>> for UriTemplateStr
1.0.0 · source§fn le(&self, other: &Rhs) -> bool
fn le(&self, other: &Rhs) -> bool
This method tests less than or equal to (for
self
and other
) and is used by the <=
operator. Read moresource§impl PartialOrd<UriTemplateStr> for &str
impl PartialOrd<UriTemplateStr> for &str
source§fn partial_cmp(&self, o: &UriTemplateStr) -> Option<Ordering>
fn partial_cmp(&self, o: &UriTemplateStr) -> Option<Ordering>
1.0.0 · source§fn le(&self, other: &Rhs) -> bool
fn le(&self, other: &Rhs) -> bool
This method tests less than or equal to (for
self
and other
) and is used by the <=
operator. Read moresource§impl PartialOrd<UriTemplateStr> for Cow<'_, str>
impl PartialOrd<UriTemplateStr> for Cow<'_, str>
source§fn partial_cmp(&self, o: &UriTemplateStr) -> Option<Ordering>
fn partial_cmp(&self, o: &UriTemplateStr) -> Option<Ordering>
1.0.0 · source§fn le(&self, other: &Rhs) -> bool
fn le(&self, other: &Rhs) -> bool
This method tests less than or equal to (for
self
and other
) and is used by the <=
operator. Read moresource§impl PartialOrd<UriTemplateStr> for str
impl PartialOrd<UriTemplateStr> for str
source§fn partial_cmp(&self, o: &UriTemplateStr) -> Option<Ordering>
fn partial_cmp(&self, o: &UriTemplateStr) -> Option<Ordering>
1.0.0 · source§fn le(&self, other: &Rhs) -> bool
fn le(&self, other: &Rhs) -> bool
This method tests less than or equal to (for
self
and other
) and is used by the <=
operator. Read moresource§impl PartialOrd<str> for &UriTemplateStr
impl PartialOrd<str> for &UriTemplateStr
1.0.0 · source§fn le(&self, other: &Rhs) -> bool
fn le(&self, other: &Rhs) -> bool
This method tests less than or equal to (for
self
and other
) and is used by the <=
operator. Read moresource§impl PartialOrd<str> for UriTemplateStr
impl PartialOrd<str> for UriTemplateStr
1.0.0 · source§fn le(&self, other: &Rhs) -> bool
fn le(&self, other: &Rhs) -> bool
This method tests less than or equal to (for
self
and other
) and is used by the <=
operator. Read moresource§impl PartialOrd for UriTemplateStr
impl PartialOrd for UriTemplateStr
source§fn partial_cmp(&self, other: &UriTemplateStr) -> Option<Ordering>
fn partial_cmp(&self, other: &UriTemplateStr) -> Option<Ordering>
1.0.0 · source§fn le(&self, other: &Rhs) -> bool
fn le(&self, other: &Rhs) -> bool
This method tests less than or equal to (for
self
and other
) and is used by the <=
operator. Read moresource§impl Serialize for UriTemplateStr
impl Serialize for UriTemplateStr
source§impl ToOwned for UriTemplateStr
impl ToOwned for UriTemplateStr
§type Owned = UriTemplateString
type Owned = UriTemplateString
The resulting type after obtaining ownership.
source§fn to_owned(&self) -> Self::Owned
fn to_owned(&self) -> Self::Owned
Creates owned data from borrowed data, usually by cloning. Read more
1.63.0 · source§fn clone_into(&self, target: &mut Self::Owned)
fn clone_into(&self, target: &mut Self::Owned)
Uses borrowed data to replace owned data, usually by cloning. Read more