Enum Typedef

Source
pub enum Typedef {
Show 16 variants Any, Array, Bool, BoolArray, Date, DateArray, Number, NumberArray, Task, TaskArray, Text, TextArray, Closure, Eval, Format, Node,
}
Expand description

Represents type definitions in the AIM expression grammar.

The Typedef enum provides a complete type system for the AIM expression language, including basic types, array types, and special-purpose types. These type definitions are used throughout the expression evaluation system for type checking, casting operations, function signature validation, and method dispatch.

§Type Safety and Promotion

AIMX uses a robust type system with automatic type promotion. The system follows a left-operand-first strategy where the left operand’s type determines how the right operand is promoted. This provides expressive power while maintaining type safety.

§Variants

§Basic Types

  • Any - Wildcard type that matches any value
  • Bool - Boolean values (true/false)
  • Date - Date and time values
  • Number - 64-bit floating point numbers
  • Task - Task primitives with status and text
  • Text - String values

§Array Types

  • Array - Array of any values (heterogeneous)
  • BoolArray - Arrays of boolean values
  • DateArray - Arrays of date values
  • NumberArray - Arrays of number values
  • TaskArray - Arrays of task values
  • TextArray - Arrays of text values

§Special Types

  • Closure - Closure expression type (anonymous functions)
  • Eval - Evaluation result type (inference output)
  • Format - Formatting instruction type (output formatting)
  • Node - Node reference type (workflow references)

§Examples

use aimx::typedef::Typedef;
 
// Basic type checking
assert!(Typedef::Bool.is_bool());
assert!(Typedef::NumberArray.is_array());
 
// Type conversion
let text_type = Typedef::Text;
assert_eq!(text_type.as_string(), "Text");
 
// Array type recognition
let number_array = Typedef::NumberArray;
assert!(number_array.is_number());
assert!(number_array.is_array());

See also: parse_typedef, parse_literal_type

Variants§

§

Any

Any type

§

Array

Generic Array

§

Bool

Boolean type

§

BoolArray

Array of boolean values

§

Date

Date and time type

§

DateArray

Array of date values

§

Number

Number (64-bit float) type

§

NumberArray

Array of number values

§

Task

Task primitive type

§

TaskArray

Array of task values

§

Text

Text/string type

§

TextArray

Array of text values

§

Closure

Closure expression type

§

Eval

Evaluation result type

§

Format

Formatting instruction type

§

Node

Node reference type

Implementations§

Source§

impl Typedef

Source

pub fn is_any(&self) -> bool

Check if this type definition represents the Any type.

§Returns
  • bool - True if this is the Any type, false otherwise
Source

pub fn is_any_array(&self) -> bool

Check if this type definition represents the Any Array type.

§Returns
  • bool - True if this is the Any Array type, false otherwise
Source

pub fn is_bool(&self) -> bool

Check if this type definition represents a Bool or BoolArray type.

§Returns
  • bool - True if this is a Bool or BoolArray type, false otherwise
Source

pub fn is_date(&self) -> bool

Check if this type definition represents a Date or DateArray type.

§Returns
  • bool - True if this is a Date or DateArray type, false otherwise
Source

pub fn is_number(&self) -> bool

Check if this type definition represents a Number or NumberArray type.

§Returns
  • bool - True if this is a Number or NumberArray type, false otherwise
Source

pub fn is_task(&self) -> bool

Check if this type definition represents a Task or TaskArray type.

§Returns
  • bool - True if this is a Task or TaskArray type, false otherwise
Source

pub fn is_text(&self) -> bool

Check if this type definition represents a Text or TextArray type.

§Returns
  • bool - True if this is a Text or TextArray type, false otherwise
Source

pub fn is_literal(&self) -> bool

Check if this type definition represents a Literal type.

Literal types are the basic value types that can be directly represented in expressions without requiring complex evaluation.

§Returns
  • bool - True if this is a Literal type, false otherwise
Source

pub fn as_literal(&self) -> Self

Convert this type definition to its corresponding literal type.

This method strips array qualifiers and returns the base literal type. For example, NumberArray becomes Number, TextArray becomes Text. Special types remain unchanged.

§Returns
  • Typedef - The corresponding literal type
§Examples
use aimx::typedef::Typedef;
 
assert_eq!(Typedef::NumberArray.as_literal(), Typedef::Number);
assert_eq!(Typedef::Text.as_literal(), Typedef::Text);
assert_eq!(Typedef::Closure.as_literal(), Typedef::Closure);
Source

pub fn is_array(&self) -> bool

Check if this type definition represents an array type.

§Returns
  • bool - True if this is an array type, false otherwise
Source

pub fn as_array(&self) -> Self

Convert this type definition to its corresponding array type.

This method adds array qualifiers to literal types. For example, Number becomes NumberArray, Text becomes TextArray. Special types remain unchanged.

§Returns
  • Typedef - The corresponding array type
§Examples
use aimx::typedef::Typedef;
 
assert_eq!(Typedef::Number.as_array(), Typedef::NumberArray);
assert_eq!(Typedef::TextArray.as_array(), Typedef::TextArray);
assert_eq!(Typedef::Closure.as_array(), Typedef::Closure);
Source

pub fn is_format(&self) -> bool

Check if this type definition represents the Format type.

§Returns
  • bool - True if this is the Format type, false otherwise
Source

pub fn is_eval(&self) -> bool

Check if this type definition represents the Eval type.

§Returns
  • bool - True if this is the Eval type, false otherwise
Source

pub fn is_node(&self) -> bool

Check if this type definition represents a Node type.

§Returns
  • bool - True if this is a Node type, false otherwise
Source

pub fn is_closure(&self) -> bool

Check if this type definition represents the Closure type.

§Returns
  • bool - True if this is the Closure type, false otherwise
Source

pub fn is_special(&self) -> bool

Check if this type definition represents an special type.

Special types are those that don’t represent literal values but rather serve specific purposes in the expression system.

§Returns
  • bool - True if this is a Format, Eval, Node or Closure type, false otherwise
Source

pub fn as_string(&self) -> &'static str

Get the string representation of this type definition.

Returns the canonical string representation used in AIM expressions. This is the same format that would appear in type casting operations.

§Returns
  • &'static str - The string representation of the type
§Examples
use aimx::typedef::Typedef;
 
assert_eq!(Typedef::Bool.as_string(), "Bool");
assert_eq!(Typedef::NumberArray.as_string(), "Number[]");
assert_eq!(Typedef::Closure.as_string(), "Closure");

Trait Implementations§

Source§

impl Clone for Typedef

Source§

fn clone(&self) -> Typedef

Returns a duplicate of the value. Read more
1.0.0 · Source§

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

Performs copy-assignment from source. Read more
Source§

impl Debug for Typedef

Source§

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

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

impl Display for Typedef

Source§

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

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

impl ExpressionLike for Typedef

Source§

fn evaluate(&self, _context: &mut dyn ContextLike) -> Result<Value>

Evaluate the expression within the given context. Read more
Source§

fn write(&self, writer: &mut Writer)

Write this expression to the provided writer. Read more
Source§

fn to_sanitized(&self) -> String

Convert this expression to a sanitized string representation. Read more
Source§

fn to_formula(&self) -> String

Convert this expression to a formula string representation. Read more
Source§

impl PartialEq for Typedef

Source§

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

Tests for self and other values to be equal, and is used by ==.
1.0.0 · Source§

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

Tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
Source§

impl StructuralPartialEq for Typedef

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<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<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

§

impl<T> Instrument for T

§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided [Span], returning an Instrumented wrapper. Read more
§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
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.

§

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

§

fn and<P, B, E>(self, other: P) -> And<T, P>
where T: Policy<B, E>, P: Policy<B, E>,

Create a new Policy that returns [Action::Follow] only if self and other return Action::Follow. Read more
§

fn or<P, B, E>(self, other: P) -> Or<T, P>
where T: Policy<B, E>, P: Policy<B, E>,

Create a new Policy that returns [Action::Follow] if either self or other returns Action::Follow. Read more
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
§

impl<T> ToStringFallible for T
where T: Display,

§

fn try_to_string(&self) -> Result<String, TryReserveError>

ToString::to_string, but without panic on OOM.

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.
§

impl<V, T> VZip<V> for T
where V: MultiLane<T>,

§

fn vzip(self) -> V

§

impl<T> WithSubscriber for T

§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a [WithDispatch] wrapper. Read more
§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a [WithDispatch] wrapper. Read more
§

impl<T> ErasedDestructor for T
where T: 'static,