pub struct TypeRef { /* private fields */ }

Implementations

Provides the validation for the given value based on this schema type

use ion_rs::value::owned::OwnedElement;
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 OwnedElement
    use ion_schema::authority::MapDocumentAuthority;
    let owned_element: OwnedElement = 4.into();
    let document: Vec<OwnedElement> = 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

Returns a copy of the value. Read more

Performs copy-assignment from source. Read more

Formats the value using the given formatter. Read more

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

Immutably borrows from an owned value. Read more

Mutably borrows from an owned value. Read more

Returns the argument unchanged.

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

The resulting type after obtaining ownership.

Creates owned data from borrowed data, usually by cloning. Read more

Uses borrowed data to replace owned data, usually by cloning. Read more

The type returned in the event of a conversion error.

Performs the conversion.

The type returned in the event of a conversion error.

Performs the conversion.