Expand description
Multi-field (Multislot) Variables - CLIPS-inspired Feature
This module implements CLIPS-style multi-field variables for pattern matching on arrays and collections. Multi-field variables allow:
- Collecting all values:
Order.items $?all_items - Checking containment:
Product.tags contains "electronics" - Getting array length:
Order.items count > 0 - Accessing elements:
Order.items first,Order.items last
§CLIPS Reference
(deftemplate order
(slot order-id)
(multislot items))
(defrule process-order
(order (order-id ?id) (items $?all-items))
=>
(foreach ?item $?all-items
(process ?item)))§Rust API
ⓘ
use rust_rule_engine::rete::{MultifieldOp, PatternConstraint};
// Pattern: Order.items $?all_items
let constraint = PatternConstraint::MultiField {
field: "items".to_string(),
variable: Some("$?all_items".to_string()),
operator: MultifieldOp::Collect,
value: None,
};
// Pattern: Product.tags contains "electronics"
let constraint = PatternConstraint::MultiField {
field: "tags".to_string(),
variable: None,
operator: MultifieldOp::Contains,
value: Some(FactValue::String("electronics".to_string())),
};Enums§
- Multifield
Op - Multi-field operations for pattern matching
Functions§
- evaluate_
multifield_ pattern - Helper function to evaluate multi-field patterns in rules
- is_
multifield_ variable - Check if a string is a multi-field variable
- parse_
multifield_ variable - Parse multi-field variable syntax