pub struct RawName(/* private fields */);Expand description
A newtype which indicates that the contained InternalName may not yet be
fully-qualified.
You can convert it to a fully-qualified InternalName using
.qualify_with(), .qualify_with_name(), or .conditionally_qualify_with().
Implementations§
Source§impl RawName
impl RawName
Sourcepub fn new_from_unreserved(id: UnreservedId, loc: Option<Loc>) -> Self
pub fn new_from_unreserved(id: UnreservedId, loc: Option<Loc>) -> Self
Create a new RawName from the given UnreservedId
Sourcepub fn from_name(name: InternalName) -> Self
pub fn from_name(name: InternalName) -> Self
Create a new RawName from the given InternalName.
Note that if name includes explicit namespaces, the result will be a
RawName that also includes those explicit namespaces, as if that
fully-qualified name appeared directly in the (JSON or Cedar) schema
format.
If name does not include explicit namespaces, the result will be a
RawName that also does not include explicit namespaces, which may or
may not translate back to the original input name, due to
namespace-qualification rules.
Sourcepub fn parse_unqualified_name(s: &str) -> Result<Self, ParseErrors>
pub fn parse_unqualified_name(s: &str) -> Result<Self, ParseErrors>
Create a new RawName by parsing the provided string, which should contain
an unqualified InternalName (no explicit namespaces)
Sourcepub fn from_normalized_str(s: &str) -> Result<Self, ParseErrors>
pub fn from_normalized_str(s: &str) -> Result<Self, ParseErrors>
Create a new RawName by parsing the provided string, which should contain
an InternalName in normalized form.
(See the crate::FromNormalizedStr trait.)
Sourcepub fn is_unqualified(&self) -> bool
pub fn is_unqualified(&self) -> bool
Is this RawName unqualified, that is, written without any explicit
namespaces.
(This method returning true does not imply that the RawName will
eventually resolve to an unqualified name.)
Sourcepub fn qualify_with(&self, ns: Option<&InternalName>) -> InternalName
pub fn qualify_with(&self, ns: Option<&InternalName>) -> InternalName
Convert this RawName to an InternalName by adding the given ns
as its prefix, or by no-op if ns is None.
Note that if the RawName already had a non-empty explicit namespace,
no additional prefixing will be done, even if ns is Some.
Sourcepub fn qualify_with_name(&self, ns: Option<&Name>) -> InternalName
pub fn qualify_with_name(&self, ns: Option<&Name>) -> InternalName
Convert this RawName to an InternalName by adding the given ns
as its prefix, or by no-op if ns is None.
Note that if the RawName already had a non-empty explicit namespace,
no additional prefixing will be done, even if ns is Some.
Sourcepub fn conditionally_qualify_with(
self,
ns: Option<&InternalName>,
reference_type: ReferenceType,
) -> ConditionalName
pub fn conditionally_qualify_with( self, ns: Option<&InternalName>, reference_type: ReferenceType, ) -> ConditionalName
Convert this RawName to a ConditionalName.
This method is appropriate for when we encounter this RawName as a
type reference while the current/active namespace is ns (or None if
the current/active namespace is the empty namespace).
This RawName will resolve as follows:
- If the
RawNamealready has a non-empty explicit namespace, there is no ambiguity, and it will resolve always and only to itself - Otherwise (if the
RawNamedoes not have an explicit namespace already), then it resolves to the following in priority order:- The fully-qualified name resulting from prefixing
nsto thisRawName, if that fully-qualified name is declared in the schema (in any schema fragment) - Itself in the empty namespace, if that name is declared in the schema (in any schema fragment)
- The fully-qualified name resulting from prefixing
Note that if the RawName is the name of a primitive or extension
type (without explicit __cedar), it will resolve via (2) above,
because the primitive/extension type names will be added as defined
common types in the empty namespace (aliasing to the real __cedar
definitions), assuming the user didn’t themselves define those names
in the empty namespace.
Trait Implementations§
Source§impl<'de> Deserialize<'de> for RawName
impl<'de> Deserialize<'de> for RawName
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>,
Source§impl Ord for RawName
impl Ord for RawName
Source§impl PartialOrd for RawName
impl PartialOrd for RawName
impl Eq for RawName
impl StructuralPartialEq for RawName
Auto Trait Implementations§
impl Freeze for RawName
impl RefUnwindSafe for RawName
impl Send for RawName
impl Sync for RawName
impl Unpin for RawName
impl UnwindSafe for RawName
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<Q, K> Comparable<K> for Q
impl<Q, K> Comparable<K> for Q
Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
key and return true if they are equal.Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more