pub struct SchemaFragment { /* private fields */ }Expand description
Contains all the type information used to construct a Schema that can be
used to validate a policy.
Implementations§
Source§impl SchemaFragment
impl SchemaFragment
Sourcepub fn namespace_annotations(
&self,
namespace: EntityNamespace,
) -> Option<impl Iterator<Item = (&str, &str)>>
pub fn namespace_annotations( &self, namespace: EntityNamespace, ) -> Option<impl Iterator<Item = (&str, &str)>>
Get annotations of a non-empty namespace.
We do not allow namespace-level annotations on the empty namespace.
Returns None if namespace is not found in the SchemaFragment
Sourcepub fn namespace_annotation(
&self,
namespace: EntityNamespace,
annotation_key: impl AsRef<str>,
) -> Option<&str>
pub fn namespace_annotation( &self, namespace: EntityNamespace, annotation_key: impl AsRef<str>, ) -> Option<&str>
Get annotation value of a non-empty namespace by annotation key
annotation_key
We do not allow namespace-level annotations on the empty namespace.
Returns None if namespace is not found in the SchemaFragment
or annotation_key is not a valid annotation key
or it does not exist
Sourcepub fn common_type_annotations(
&self,
namespace: Option<EntityNamespace>,
ty: &str,
) -> Option<impl Iterator<Item = (&str, &str)>>
pub fn common_type_annotations( &self, namespace: Option<EntityNamespace>, ty: &str, ) -> Option<impl Iterator<Item = (&str, &str)>>
Get annotations of a common type declaration
Returns None if namespace is not found in the SchemaFragment or
ty is not a valid common type ID or ty is not found in the
corresponding namespace definition
Sourcepub fn common_type_annotation(
&self,
namespace: Option<EntityNamespace>,
ty: &str,
annotation_key: impl AsRef<str>,
) -> Option<&str>
pub fn common_type_annotation( &self, namespace: Option<EntityNamespace>, ty: &str, annotation_key: impl AsRef<str>, ) -> Option<&str>
Get annotation value of a common type declaration by annotation key
annotation_key
Returns None if namespace is not found in the SchemaFragment
or ty is not a valid common type ID
or ty is not found in the corresponding namespace definition
or annotation_key is not a valid annotation key
or it does not exist
Sourcepub fn entity_type_annotations(
&self,
namespace: Option<EntityNamespace>,
ty: &str,
) -> Option<impl Iterator<Item = (&str, &str)>>
pub fn entity_type_annotations( &self, namespace: Option<EntityNamespace>, ty: &str, ) -> Option<impl Iterator<Item = (&str, &str)>>
Get annotations of an entity type declaration
Returns None if namespace is not found in the SchemaFragment or
ty is not a valid entity type name or ty is not found in the
corresponding namespace definition
Sourcepub fn entity_type_annotation(
&self,
namespace: Option<EntityNamespace>,
ty: &str,
annotation_key: impl AsRef<str>,
) -> Option<&str>
pub fn entity_type_annotation( &self, namespace: Option<EntityNamespace>, ty: &str, annotation_key: impl AsRef<str>, ) -> Option<&str>
Get annotation value of an entity type declaration by annotation key
annotation_key
Returns None if namespace is not found in the SchemaFragment
or ty is not a valid entity type name
or ty is not found in the corresponding namespace definition
or annotation_key is not a valid annotation key
or it does not exist
Sourcepub fn action_annotations(
&self,
namespace: Option<EntityNamespace>,
id: &EntityId,
) -> Option<impl Iterator<Item = (&str, &str)>>
pub fn action_annotations( &self, namespace: Option<EntityNamespace>, id: &EntityId, ) -> Option<impl Iterator<Item = (&str, &str)>>
Get annotations of an action declaration
Returns None if namespace is not found in the SchemaFragment or
id is not found in the corresponding namespace definition
Sourcepub fn action_annotation(
&self,
namespace: Option<EntityNamespace>,
id: &EntityId,
annotation_key: impl AsRef<str>,
) -> Option<&str>
pub fn action_annotation( &self, namespace: Option<EntityNamespace>, id: &EntityId, annotation_key: impl AsRef<str>, ) -> Option<&str>
Get annotation value of an action declaration by annotation key
annotation_key
Returns None if namespace is not found in the SchemaFragment
or id is not found in the corresponding namespace definition
or annotation_key is not a valid annotation key
or it does not exist
Sourcepub fn namespaces(&self) -> impl Iterator<Item = Option<EntityNamespace>> + '_
pub fn namespaces(&self) -> impl Iterator<Item = Option<EntityNamespace>> + '_
Extract namespaces defined in this SchemaFragment.
None indicates the empty namespace.
Sourcepub fn from_json_str(src: &str) -> Result<Self, SchemaError>
pub fn from_json_str(src: &str) -> Result<Self, SchemaError>
Create a SchemaFragment from a string containing JSON in the
JSON schema format.
Sourcepub fn from_json_value(json: Value) -> Result<Self, SchemaError>
pub fn from_json_value(json: Value) -> Result<Self, SchemaError>
Create a SchemaFragment from a JSON value (which should be an
object of the shape required for the JSON schema format).
Sourcepub fn from_cedarschema_file(
r: impl Read,
) -> Result<(Self, impl Iterator<Item = SchemaWarning>), CedarSchemaError>
pub fn from_cedarschema_file( r: impl Read, ) -> Result<(Self, impl Iterator<Item = SchemaWarning>), CedarSchemaError>
Parse a SchemaFragment from a reader containing the Cedar schema syntax
Sourcepub fn from_cedarschema_str(
src: &str,
) -> Result<(Self, impl Iterator<Item = SchemaWarning>), CedarSchemaError>
pub fn from_cedarschema_str( src: &str, ) -> Result<(Self, impl Iterator<Item = SchemaWarning>), CedarSchemaError>
Parse a SchemaFragment from a string containing the Cedar schema syntax
Sourcepub fn from_json_file(file: impl Read) -> Result<Self, SchemaError>
pub fn from_json_file(file: impl Read) -> Result<Self, SchemaError>
Create a SchemaFragment directly from a JSON file (which should
contain an object of the shape required for the JSON schema format).
Sourcepub fn to_json_value(self) -> Result<Value, SchemaError>
pub fn to_json_value(self) -> Result<Value, SchemaError>
Serialize this SchemaFragment as a JSON value
Sourcepub fn to_json_string(&self) -> Result<String, SchemaError>
pub fn to_json_string(&self) -> Result<String, SchemaError>
Serialize this SchemaFragment as a JSON string
Sourcepub fn to_cedarschema(&self) -> Result<String, ToCedarSchemaError>
pub fn to_cedarschema(&self) -> Result<String, ToCedarSchemaError>
Serialize this SchemaFragment into a string in the Cedar schema
syntax
Trait Implementations§
Source§impl Clone for SchemaFragment
impl Clone for SchemaFragment
Source§fn clone(&self) -> SchemaFragment
fn clone(&self) -> SchemaFragment
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreSource§impl Debug for SchemaFragment
impl Debug for SchemaFragment
Source§impl FromStr for SchemaFragment
impl FromStr for SchemaFragment
Source§fn from_str(src: &str) -> Result<Self, Self::Err>
fn from_str(src: &str) -> Result<Self, Self::Err>
Construct SchemaFragment from a string containing a schema formatted
in the Cedar schema format. This can fail if the string is not a valid
schema. This function does not check for consistency in the schema
(e.g., references to undefined entities) because this is not required
until a Schema is constructed.
Source§type Err = CedarSchemaError
type Err = CedarSchemaError
Source§impl TryInto<Schema> for SchemaFragment
impl TryInto<Schema> for SchemaFragment
Source§fn try_into(self) -> Result<Schema, Self::Error>
fn try_into(self) -> Result<Schema, Self::Error>
Convert SchemaFragment into a Schema. To build the Schema we
need to have all entity types defined, so an error will be returned if
any undeclared entity types are referenced in the schema fragment.
Source§type Error = SchemaError
type Error = SchemaError
Auto Trait Implementations§
impl Freeze for SchemaFragment
impl RefUnwindSafe for SchemaFragment
impl Send for SchemaFragment
impl Sync for SchemaFragment
impl Unpin for SchemaFragment
impl UnwindSafe for SchemaFragment
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<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