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 valueBool- Boolean values (true/false)Date- Date and time valuesNumber- 64-bit floating point numbersTask- Task primitives with status and textText- String values
§Array Types
Array- Array of any values (heterogeneous)BoolArray- Arrays of boolean valuesDateArray- Arrays of date valuesNumberArray- Arrays of number valuesTaskArray- Arrays of task valuesTextArray- 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
impl Typedef
Sourcepub fn is_any(&self) -> bool
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
Sourcepub fn is_any_array(&self) -> bool
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
Sourcepub fn is_bool(&self) -> bool
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
Sourcepub fn is_date(&self) -> bool
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
Sourcepub fn is_number(&self) -> bool
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
Sourcepub fn is_task(&self) -> bool
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
Sourcepub fn is_text(&self) -> bool
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
Sourcepub fn is_literal(&self) -> bool
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
Sourcepub fn as_literal(&self) -> Self
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);Sourcepub fn is_array(&self) -> bool
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
Sourcepub fn as_array(&self) -> Self
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);Sourcepub fn is_format(&self) -> bool
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
Sourcepub fn is_eval(&self) -> bool
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
Sourcepub fn is_node(&self) -> bool
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
Sourcepub fn is_closure(&self) -> bool
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
Sourcepub fn is_special(&self) -> bool
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
Sourcepub fn as_string(&self) -> &'static str
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 ExpressionLike for Typedef
impl ExpressionLike for Typedef
Source§fn evaluate(&self, _context: &mut dyn ContextLike) -> Result<Value>
fn evaluate(&self, _context: &mut dyn ContextLike) -> Result<Value>
Source§fn to_sanitized(&self) -> String
fn to_sanitized(&self) -> String
Source§fn to_formula(&self) -> String
fn to_formula(&self) -> String
impl StructuralPartialEq for Typedef
Auto Trait Implementations§
impl Freeze for Typedef
impl RefUnwindSafe for Typedef
impl Send for Typedef
impl Sync for Typedef
impl Unpin for Typedef
impl UnwindSafe for Typedef
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,
§impl<T> Instrument for T
impl<T> Instrument for T
§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
§impl<T> PolicyExt for Twhere
T: ?Sized,
impl<T> PolicyExt for Twhere
T: ?Sized,
§impl<T> ToStringFallible for Twhere
T: Display,
impl<T> ToStringFallible for Twhere
T: Display,
§fn try_to_string(&self) -> Result<String, TryReserveError>
fn try_to_string(&self) -> Result<String, TryReserveError>
ToString::to_string, but without panic on OOM.