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) -> Self
pub fn new_from_unreserved(id: UnreservedId) -> 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 cedar_policy_core::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
RawName
already has a non-empty explicit namespace, there is no ambiguity, and it will resolve always and only to itself - Otherwise (if the
RawName
does not have an explicit namespace already), then it resolves to the following in priority order:- The fully-qualified name resulting from prefixing
ns
to 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§unsafe fn clone_to_uninit(&self, dst: *mut T)
unsafe fn clone_to_uninit(&self, dst: *mut T)
clone_to_uninit
)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