pub struct ParsedEqname<'a> { /* private fields */ }
Expand description
Parsed EQName
reference.
Implementations§
Source§impl<'a> ParsedEqname<'a>
impl<'a> ParsedEqname<'a>
Sourcepub fn from_str(s: &'a str) -> Result<Self, NameError>
pub fn from_str(s: &'a str) -> Result<Self, NameError>
Creates a new ParsedEqname<'_>
from the given string slice.
§Failures
Fails if the given string is not a valid EQName
.
§Examples
let nc = ParsedEqname::from_str("hello")?;
assert_eq!(nc, "hello");
let q = ParsedEqname::from_str("foo:bar")?;
assert_eq!(q, "foo:bar");
let uri_qualified = ParsedEqname::from_str("Q{foo}bar")?;
assert_eq!(uri_qualified, "Q{foo}bar");
assert!(ParsedEqname::from_str("").is_err(), "Empty string is not an EQName");
assert!(ParsedEqname::from_str("foo bar").is_err(), "Whitespace is not allowed");
assert!(ParsedEqname::from_str("foo:bar:baz").is_err(), "Two or more colons are not allowed");
assert!(ParsedEqname::from_str("0foo").is_err(), "ASCII digit at the beginning is not allowed");
Sourcepub fn as_eqname(&self) -> &'a Eqname
pub fn as_eqname(&self) -> &'a Eqname
Returns the string as &Eqname
.
§Exmaples
use xml_string::names::Eqname;
let name = ParsedEqname::from_str("foo:bar")?;
assert_eq!(name, "foo:bar");
let s: &Eqname = name.as_eqname();
assert_eq!(s, "foo:bar");
Sourcepub fn as_qname(&self) -> Option<&'a Qname>
pub fn as_qname(&self) -> Option<&'a Qname>
Returns the string as &Qname
if it is QName.
§Exmaples
use xml_string::names::Qname;
let name = ParsedEqname::from_str("foo:bar")?;
assert_eq!(name, "foo:bar");
let s: &Qname = name.as_qname()
.expect("The string is QName");
assert_eq!(s, "foo:bar");
Sourcepub fn as_uri_qualified_name(&self) -> Option<&'a UriQualifiedName>
pub fn as_uri_qualified_name(&self) -> Option<&'a UriQualifiedName>
Returns the string as &UriQualifiedName
if it is URIQualifiedName.
§Exmaples
use xml_string::names::UriQualifiedName;
let name = ParsedEqname::from_str("Q{foo}bar")?;
assert_eq!(name, "Q{foo}bar");
let s: &UriQualifiedName = name.as_uri_qualified_name()
.expect("The string is URIQualifiedName");
assert_eq!(s, "Q{foo}bar");
Sourcepub fn as_str(&self) -> &'a str
pub fn as_str(&self) -> &'a str
Returns the string as &str
.
§Exmaples
let name = ParsedEqname::from_str("hello")?;
assert_eq!(name, "hello");
let s: &str = name.as_str();
assert_eq!(s, "hello");
Sourcepub fn to_variant(&self) -> EqnameVariantData<&Qname, &UriQualifiedName>
pub fn to_variant(&self) -> EqnameVariantData<&Qname, &UriQualifiedName>
Returns the name in the type specific to the variant
(i.e. Qname
or UriQualifiedName
).
Sourcepub fn to_parsed_variant(
&self,
) -> EqnameVariantData<&ParsedQname<'a>, &ParsedUriQualifiedName<'a>>
pub fn to_parsed_variant( &self, ) -> EqnameVariantData<&ParsedQname<'a>, &ParsedUriQualifiedName<'a>>
Returns the name in the type specific to the variant
(i.e. ParsedQname
or ParsedUriQualifiedName
).
Sourcepub fn namespace(&self) -> EqnameNamespace<'a>
pub fn namespace(&self) -> EqnameNamespace<'a>
Returns the namespace part if available: prefix for Qname
, URI for UriQualifiedName
.
§Examples
use xml_string::names::{EqnameNamespace, Ncname, Qname};
let nc = Eqname::from_str("local")?;
assert_eq!(nc.namespace(), EqnameNamespace::None);
let q = Eqname::from_str("foo:bar")?;
let q_prefix = Ncname::from_str("foo")
.expect("Should never fail: Valid NCName");
assert_eq!(q.namespace(), EqnameNamespace::Prefix(q_prefix));
let uri_qualified = Eqname::from_str("Q{foo}bar")?;
assert_eq!(uri_qualified.namespace(), EqnameNamespace::Uri("foo"));
let uri_qualified_empty = Eqname::from_str("Q{}bar")?;
assert_eq!(uri_qualified_empty.namespace(), EqnameNamespace::Uri(""));
Sourcepub fn local_name(&self) -> &'a Ncname
pub fn local_name(&self) -> &'a Ncname
Returns the local part.
§Examples
let nc = ParsedEqname::from_str("foo")?;
assert_eq!(nc.local_name(), "foo");
let q = ParsedEqname::from_str("foo:bar")?;
assert_eq!(q.local_name(), "bar");
let uri_qualified = ParsedEqname::from_str("Q{foo}bar")?;
assert_eq!(uri_qualified.local_name(), "bar");
Sourcepub fn namespace_and_local(&self) -> (EqnameNamespace<'a>, &'a Ncname)
pub fn namespace_and_local(&self) -> (EqnameNamespace<'a>, &'a Ncname)
Returns a pair of the namespace and the local name.
This returns the same result as (self.namespace(), self.local_name())
,
but more efficiently than calling ParsedEqname::namespace
and
ParsedEqname::local_name
individually.
§Examples
use xml_string::names::{EqnameNamespace, Ncname};
let ncname_bar = Ncname::from_str("bar")
.expect("Should never fail: Valid NCName");
let nc = ParsedEqname::from_str("bar")?;
assert_eq!(nc.namespace_and_local(), (EqnameNamespace::None, ncname_bar));
let q = ParsedEqname::from_str("foo:bar")?;
let expected_prefix = Ncname::from_str("foo")
.expect("Should never fail: Valid NCName");
assert_eq!(
q.namespace_and_local(),
(EqnameNamespace::Prefix(expected_prefix), ncname_bar)
);
let uri_qualified = ParsedEqname::from_str("Q{foo}bar")?;
assert_eq!(uri_qualified.namespace_and_local(), (EqnameNamespace::Uri("foo"), ncname_bar));
Trait Implementations§
Source§impl AsRef<Eqname> for ParsedEqname<'_>
impl AsRef<Eqname> for ParsedEqname<'_>
Source§impl AsRef<str> for ParsedEqname<'_>
impl AsRef<str> for ParsedEqname<'_>
Source§impl<'a> Clone for ParsedEqname<'a>
impl<'a> Clone for ParsedEqname<'a>
Source§fn clone(&self) -> ParsedEqname<'a>
fn clone(&self) -> ParsedEqname<'a>
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source
. Read more