Skip to main content

VarType

Enum VarType 

Source
pub enum VarType {
    Str,
    Bool,
    Int,
    Float,
    List(Vec<VarDecl>),
    Struct(Vec<VarDecl>),
    Enum(Vec<VariantDecl>),
    Tmpl(Vec<VarDecl>),
    Option(Box<VarType>),
}
Expand description

Expected type of a template variable.

Variants§

§

Str

str — expects a string value.

§

Bool

bool — expects a boolean value.

§

Int

int — expects an integer value.

§

Float

float — expects a floating-point value.

§

List(Vec<VarDecl>)

list(field = type, ...) — required fields per item.

§

Struct(Vec<VarDecl>)

struct(field = type, ...) — required fields.

§

Enum(Vec<VariantDecl>)

enum(Option1, Option2, ...) — expects one of these variants.

§

Tmpl(Vec<VarDecl>)

tmpl(field = type, ...) — expects a template with matching params.

§

Option(Box<VarType>)

option(T) — syntactic sugar for enum(Some(val = T), None). Accepts Value::None or the inner T type directly.

Implementations§

Source§

impl VarType

Source

pub fn is_displayable(&self) -> bool

Returns true if this type can be directly displayed via {{ expr }}.

Only scalar types (str, int, float, bool) are displayable. Compound types (list, struct, enum, tmpl, option) must be accessed through iteration, field access, kind(), has(), or {% match %} instead.

Source

pub fn matches(&self, value: &Value) -> bool

Returns true if value is compatible with this declared type.

  • Scalar types match their corresponding Value variant.
  • List(fields) matches Value::List; if fields is non-empty, every item must be a Struct with all required keys and matching value types (recursive).
  • Struct(fields) matches Value::Struct; required keys must be present with matching value types (recursive).
  • Enum(variants) matches unit variants as Value::Str, struct variants as Value::Struct with __kind__ + typed fields.
Source

pub fn check(&self, value: &Value) -> Result<(), TypeCheckError>

Validate value against this type, returning a structured error with the path to the first mismatch on failure.

Uses a two-pass strategy: a fast discriminant-only check first (zero allocations), falling back to the full path-building check only when a mismatch is detected.

§Errors

Returns TypeCheckError with the dotted path to the mismatched field, the expected type, the actual type, and a preview of the actual value.

Source§

impl VarType

Source

pub fn is_option(&self) -> bool

Returns true if this type is an option(T).

option is a first-class type: a literal enum(Some(val = T), None) is an ordinary enum, not an option. Use option(T) for options.

Source

pub fn option_inner_type(&self) -> Option<&VarType>

If this type is option(T), returns the inner T type.

Trait Implementations§

Source§

impl Clone for VarType

Source§

fn clone(&self) -> VarType

Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for VarType

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result<(), Error>

Formats the value using the given formatter. Read more
Source§

impl Display for VarType

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result<(), Error>

Formats the value using the given formatter. Read more
Source§

impl Eq for VarType

Source§

impl PartialEq for VarType

Source§

fn eq(&self, other: &VarType) -> bool

Equality operator ==. Read more
1.0.0 (const: unstable) · Source§

fn ne(&self, other: &Rhs) -> bool

Inequality operator !=. Read more
Source§

impl StructuralPartialEq for VarType

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
where ST: ?Sized, DT: ?Sized,

Source§

impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
where ST: ?Sized, DT: ?Sized,

Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<Q, K> Equivalent<K> for Q
where Q: Eq + ?Sized, K: Borrow<Q> + ?Sized,

Source§

fn equivalent(&self, key: &K) -> bool

Compare self to key and return true if they are equal.
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

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

Source§

impl<T> Read<Exclusive, BecauseExclusive> for T
where T: ?Sized,

Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

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

fn clone_into(&self, target: &mut T)

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

impl<T> ToString for T
where T: Display + ?Sized,

Source§

fn to_string(&self) -> String

Converts the given value to a String. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.