Struct ion_schema::types::TypeDefinition
source · pub struct TypeDefinition { /* private fields */ }
Expand description
Represents a top level ISL type definition
Implementations§
source§impl TypeDefinition
impl TypeDefinition
pub fn id(&self) -> TypeId
sourcepub fn validate<I: Into<IonSchemaElement>>(&self, value: I) -> ValidationResult
pub fn validate<I: Into<IonSchemaElement>>(&self, value: I) -> ValidationResult
Provides the validation for the given value based on this schema type
use ion_rs::element::Element;
use ion_schema::IonSchemaElement;
use ion_schema::authority::{FileSystemDocumentAuthority, DocumentAuthority};
use ion_schema::system::SchemaSystem;
use ion_schema::result::IonSchemaResult;
use std::path::Path;
fn main() -> IonSchemaResult<()> {
// create an IonSchemaElement from an Element
use ion_schema::authority::MapDocumentAuthority;
let owned_element: Element = 4.into();
let document: Vec<Element> = vec![4.into(), "hello".to_string().into(), true.into()];
let map_authority = [
(
"sample.isl",
r#"
type::{
name: my_int,
type: int,
}
"#
)
];
// create a vector of authorities and construct schema system
// this example uses above mentioned map as the authority
let authorities: Vec<Box<dyn DocumentAuthority>> = vec![Box::new(
MapDocumentAuthority::new(map_authority),
)];
let mut schema_system = SchemaSystem::new(authorities);
// use this schema_system to load a schema as following
let schema = schema_system.load_schema("sample.isl")?;
// unwrap() here because we know that the `my_int` type exists in sample.isl
let type_ref = schema.get_type("my_int").unwrap();
assert!(type_ref.validate(&owned_element).is_ok()); // 4 is valid for `my_int`
assert!(type_ref.validate(&document).is_err()); // document type is invalid for `my_int` type
Ok(())
}
Trait Implementations§
source§impl Clone for TypeDefinition
impl Clone for TypeDefinition
source§fn clone(&self) -> TypeDefinition
fn clone(&self) -> TypeDefinition
Returns a copy of the value. Read more
1.0.0 · source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
Performs copy-assignment from
source
. Read moreAuto Trait Implementations§
impl RefUnwindSafe for TypeDefinition
impl Send for TypeDefinition
impl Sync for TypeDefinition
impl Unpin for TypeDefinition
impl UnwindSafe for TypeDefinition
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
Mutably borrows from an owned value. Read more