rust-rule-engine 1.15.0

A blazing-fast Rust rule engine with RETE algorithm, backward chaining inference, and GRL (Grule Rule Language) syntax. Features: forward/backward chaining, pattern matching, unification, O(1) rule indexing, TMS, expression evaluation, method calls, streaming with Redis state backend, watermarking, and custom functions. Production-ready for business rules, expert systems, real-time stream processing, and decision automation.
Documentation
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
.PHONY: help all examples backward-chaining getting-started rete-engine advanced-features plugins performance use-cases advanced-rete streaming misc module-system ci check fmt fmt-check clippy test build doc-test

# Default target
help:
	@echo "Available targets:"
	@echo ""
	@echo "CI & Testing:"
	@echo "  make ci                     - Full CI check (matches GitHub Actions)"
	@echo "  make check                  - Quick check (fmt, clippy, test only)"
	@echo "  make fmt                    - Format code"
	@echo "  make fmt-check              - Check code formatting"
	@echo "  make clippy                 - Run clippy linter"
	@echo "  make test                   - Run tests"
	@echo "  make build                  - Build project"
	@echo "  make doc-test               - Run documentation tests"
	@echo ""
	@echo "Examples:"
	@echo "  make all                    - Run all examples"
	@echo "  make getting-started        - Run all getting-started examples"
	@echo "  make rete-engine           - Run all RETE engine examples"
	@echo "  make advanced-features     - Run all advanced features examples"
	@echo "  make plugins               - Run all plugin examples"
	@echo "  make performance           - Run all performance examples"
	@echo "  make use-cases             - Run all use-case examples"
	@echo "  make advanced-rete         - Run all advanced RETE examples"
	@echo "  make streaming             - Run all streaming examples"
	@echo "  make misc                  - Run all misc examples"
	@echo "  make backward-chaining     - Run all backward-chaining examples"
	@echo "  make module-system         - Run all module-system examples"
	@echo ""
	@echo "Individual examples:"
	@echo "  make fraud_detection"
	@echo "  make grule_demo"
	@echo "  make simple_query_demo"
	@echo "  ... (and many more, see Cargo.toml for full list)"

# Run all examples
all: getting-started rete-engine advanced-features plugins performance use-cases advanced-rete streaming misc backward-chaining module-system

# Getting Started Examples (01-getting-started)
getting-started:
	@echo "=== Running Getting Started Examples ==="
	cargo run --example fraud_detection
	cargo run --example grule_demo
	cargo run --example advanced_method_calls
	cargo run --example expression_demo
	cargo run --example generic_method_calls
	cargo run --example inline_rules_demo
	cargo run --example method_calls_demo
	cargo run --example simple_pattern_matching_grl

# RETE Engine Examples (02-rete-engine)
rete-engine:
	@echo "=== Running RETE Engine Examples ==="
	cargo run --example multifield_demo
	cargo run --example rete_call_function_demo
	cargo run --example rete_deffacts_demo
	cargo run --example rete_demo
	cargo run --example rete_grl_demo
	cargo run --example rete_memoization_demo
	cargo run --example rete_multifield_demo
	cargo run --example rete_parse_demo
	cargo run --example rete_template_globals_demo
	cargo run --example rete_typed_facts_demo
	cargo run --example tms_demo

# Advanced Features Examples (03-advanced-features)
advanced-features:
	@echo "=== Running Advanced Features Examples ==="
	cargo run --example accumulate_demo
	cargo run --example accumulate_grl_demo
	cargo run --example action_handlers_demo
	cargo run --example action_handlers_grl_demo
	cargo run --example conflict_resolution_demo
	cargo run --example custom_functions_demo
	cargo run --example grl_no_loop_demo
	cargo run --example multifield_operations_demo
	cargo run --example no_loop_demo
	cargo run --example pattern_matching_from_grl
	cargo run --example retract_demo_rete
	cargo run --example retract_demo
	cargo run --example rule_attributes_demo
	cargo run --example rule_templates_demo
	cargo run --features streaming --example stream_join_demo

# Plugin Examples (04-plugins)
plugins:
	@echo "=== Running Plugin Examples ==="
	cargo run --example advanced_plugins_showcase
	cargo run --example builtin_plugins_demo
	cargo run --example plugin_system_demo

# Performance Examples (05-performance)
performance:
	@echo "=== Running Performance Examples ==="
	cargo run --example complete_speedup_demo
	cargo run --example distributed_demo
	cargo run --example distributed_vs_single_demo
	cargo run --example financial_stress_test
	cargo run --example parallel_advanced_features_test
	cargo run --example parallel_conditions_test
	cargo run --example parallel_engine_demo
	cargo run --example parallel_performance_demo
	cargo run --example purchasing_rules_parse_benchmark
	cargo run --example purchasing_rules_performance
	cargo run --example quick_engine_comparison

# Use Cases Examples (06-use-cases)
use-cases:
	@echo "=== Running Use Cases Examples ==="
	cargo run --example advanced_workflow_demo
	cargo run --example analytics_demo
	cargo run --example workflow_engine_demo

# Advanced RETE Examples (07-advanced-rete)
advanced-rete:
	@echo "=== Running Advanced RETE Examples ==="
	cargo run --example accumulate_rete_integration
	cargo run --example rete_engine_cached
	cargo run --example rete_p2_advanced_agenda
	cargo run --example rete_p2_working_memory
	cargo run --example rete_p3_incremental
	cargo run --example rete_p3_variable_binding
	cargo run --example rete_ul_drools_style

# Streaming Examples (11-streaming)
streaming:
	@echo "=== Running Streaming Examples ==="
	cargo run --features streaming --example streaming_fraud_detection

# Misc Examples (08-misc)
misc:
	@echo "=== Running Misc Examples ==="
	cargo run --example rule_dependency_analysis
	cargo run --example rule_file_functions_demo

# CI checks (exactly matching GitHub Actions workflow)
ci: fmt-check clippy build test test-features doc-test
	@echo "✅ All CI checks passed!"

# Test different feature combinations (critical for catching feature-specific bugs)
test-features:
	@echo "🧪 Testing feature combinations..."
	@echo "  Testing: no features (default)"
	@cargo test --no-default-features --lib
	@echo "  Testing: backward-chaining only"
	@cargo test --no-default-features --features backward-chaining --lib
	@echo "  Testing: streaming only"
	@cargo test --no-default-features --features streaming --lib
	@echo "  Testing: backward-chaining + streaming"
	@cargo test --no-default-features --features "backward-chaining,streaming" --lib
	@echo "  Testing: all features"
	@cargo test --all-features --lib
	@echo "✅ All feature combinations passed!"

# Check everything (quick check without build)
check: fmt clippy test
	@echo "✅ All checks passed!"

# Format code
fmt:
	@echo "🔧 Formatting code..."
	@cargo fmt

# Check formatting
fmt-check:
	@echo "🔍 Checking code formatting..."
	@cargo fmt -- --check

# Run clippy
clippy:
	@echo "🔍 Running clippy..."
	@cargo clippy --all-targets --all-features -- -D warnings 

# Run tests
test:
	@echo "🧪 Running tests..."
	@cargo test --verbose --all-features

# Build project
build:
	@echo "🔨 Building project..."
	@cargo build --verbose --all-features

# Run doc tests
doc-test:
	@echo "📚 Running doc tests..."
	@cargo test --doc --verbose

# Backward Chaining Examples (09-backward-chaining)
backward-chaining:
	@echo "=== Running Backward Chaining Examples ==="
	cargo run --features backward-chaining --example simple_query_demo
	cargo run --features backward-chaining --example medical_diagnosis_demo
	cargo run --features backward-chaining --example detective_system_demo
	cargo run --features backward-chaining --example multiple_solutions_demo
	cargo run --features backward-chaining --example grl_query_demo
	cargo run --features backward-chaining --example unification_demo
	cargo run --features backward-chaining --example ecommerce_approval_demo
	cargo run --features backward-chaining --example purchasing_flow_demo
	cargo run --features backward-chaining --example loan_approval_demo
	cargo run --features backward-chaining --example family_relations_demo
	cargo run --features backward-chaining --example product_recommendation_demo
	cargo run --features backward-chaining --example rete_index_demo
	cargo run --features backward-chaining --example comprehensive_backward_test
	cargo run --features backward-chaining --example backward_edge_cases_test
	cargo run --features backward-chaining --example backward_critical_missing_tests
	cargo run --features backward-chaining --example access_control_demo
	cargo run --features backward-chaining --example aggregation_demo
	cargo run --features backward-chaining --example grl_aggregation_demo
	cargo run --features backward-chaining --example negation_demo
	cargo run --features backward-chaining --example grl_negation_demo
	cargo run --features backward-chaining --example explanation_demo
	cargo run --features backward-chaining --example disjunction_demo
	cargo run --features backward-chaining --example grl_or_syntax_demo

# Module System Examples (10-module-system)
module-system:
	@echo "=== Running Module System Examples ==="
	cargo run --example module_demo
	cargo run --example smart_home_modules

# Individual example targets
fraud_detection:
	cargo run --example fraud_detection

grule_demo:
	cargo run --example grule_demo

simple_query_demo:
	cargo run --features backward-chaining --example simple_query_demo

medical_diagnosis_demo:
	cargo run --features backward-chaining --example medical_diagnosis_demo

detective_system_demo:
	cargo run --features backward-chaining --example detective_system_demo

multiple_solutions_demo:
	cargo run --features backward-chaining --example multiple_solutions_demo

grl_query_demo:
	cargo run --features backward-chaining --example grl_query_demo

unification_demo:
	cargo run --features backward-chaining --example unification_demo

ecommerce_approval_demo:
	cargo run --features backward-chaining --example ecommerce_approval_demo

purchasing_flow_demo:
	cargo run --features backward-chaining --example purchasing_flow_demo

loan_approval_demo:
	cargo run --features backward-chaining --example loan_approval_demo

family_relations_demo:
	cargo run --features backward-chaining --example family_relations_demo

product_recommendation_demo:
	cargo run --features backward-chaining --example product_recommendation_demo

rete_index_demo:
	cargo run --features backward-chaining --example rete_index_demo

comprehensive_backward_test:
	cargo run --features backward-chaining --example comprehensive_backward_test

backward_edge_cases_test:
	cargo run --features backward-chaining --example backward_edge_cases_test

module_demo:
	cargo run --example module_demo

backward_critical_missing_tests:
	cargo run --features backward-chaining --example backward_critical_missing_tests

smart_home_modules:
	cargo run --example smart_home_modules

advanced_method_calls:
	cargo run --example advanced_method_calls

expression_demo:
	cargo run --example expression_demo

generic_method_calls:
	cargo run --example generic_method_calls

inline_rules_demo:
	cargo run --example inline_rules_demo

method_calls_demo:
	cargo run --example method_calls_demo

simple_pattern_matching_grl:
	cargo run --example simple_pattern_matching_grl

multifield_demo:
	cargo run --example multifield_demo

rete_call_function_demo:
	cargo run --example rete_call_function_demo

rete_deffacts_demo:
	cargo run --example rete_deffacts_demo

rete_demo:
	cargo run --example rete_demo

rete_grl_demo:
	cargo run --example rete_grl_demo

rete_memoization_demo:
	cargo run --example rete_memoization_demo

rete_multifield_demo:
	cargo run --example rete_multifield_demo

rete_parse_demo:
	cargo run --example rete_parse_demo

rete_template_globals_demo:
	cargo run --example rete_template_globals_demo

rete_typed_facts_demo:
	cargo run --example rete_typed_facts_demo

tms_demo:
	cargo run --example tms_demo

accumulate_demo:
	cargo run --example accumulate_demo

accumulate_grl_demo:
	cargo run --example accumulate_grl_demo

action_handlers_demo:
	cargo run --example action_handlers_demo

action_handlers_grl_demo:
	cargo run --example action_handlers_grl_demo

conflict_resolution_demo:
	cargo run --example conflict_resolution_demo

custom_functions_demo:
	cargo run --example custom_functions_demo

grl_no_loop_demo:
	cargo run --example grl_no_loop_demo

multifield_operations_demo:
	cargo run --example multifield_operations_demo

no_loop_demo:
	cargo run --example no_loop_demo

pattern_matching_from_grl:
	cargo run --example pattern_matching_from_grl

retract_demo_rete:
	cargo run --example retract_demo_rete

retract_demo:
	cargo run --example retract_demo

rule_attributes_demo:
	cargo run --example rule_attributes_demo

rule_templates_demo:
	cargo run --example rule_templates_demo

advanced_plugins_showcase:
	cargo run --example advanced_plugins_showcase

builtin_plugins_demo:
	cargo run --example builtin_plugins_demo

plugin_system_demo:
	cargo run --example plugin_system_demo

complete_speedup_demo:
	cargo run --example complete_speedup_demo

distributed_demo:
	cargo run --example distributed_demo

distributed_vs_single_demo:
	cargo run --example distributed_vs_single_demo

financial_stress_test:
	cargo run --example financial_stress_test

parallel_advanced_features_test:
	cargo run --example parallel_advanced_features_test

parallel_conditions_test:
	cargo run --example parallel_conditions_test

parallel_engine_demo:
	cargo run --example parallel_engine_demo

parallel_performance_demo:
	cargo run --example parallel_performance_demo

purchasing_rules_parse_benchmark:
	cargo run --example purchasing_rules_parse_benchmark

purchasing_rules_performance:
	cargo run --example purchasing_rules_performance

quick_engine_comparison:
	cargo run --example quick_engine_comparison

advanced_workflow_demo:
	cargo run --example advanced_workflow_demo

analytics_demo:
	cargo run --example analytics_demo

workflow_engine_demo:
	cargo run --example workflow_engine_demo

accumulate_rete_integration:
	cargo run --example accumulate_rete_integration

rete_engine_cached:
	cargo run --example rete_engine_cached

rete_p2_advanced_agenda:
	cargo run --example rete_p2_advanced_agenda

rete_p2_working_memory:
	cargo run --example rete_p2_working_memory

rete_p3_incremental:
	cargo run --example rete_p3_incremental

rete_p3_variable_binding:
	cargo run --example rete_p3_variable_binding

rete_ul_drools_style:
	cargo run --example rete_ul_drools_style

rule_dependency_analysis:
	cargo run --example rule_dependency_analysis

rule_file_functions_demo:
	cargo run --example rule_file_functions_demo

access_control_demo:
	cargo run --features backward-chaining --example access_control_demo

aggregation_demo:
	cargo run --features backward-chaining --example aggregation_demo

grl_aggregation_demo:
	cargo run --features backward-chaining --example grl_aggregation_demo

negation_demo:
	cargo run --features backward-chaining --example negation_demo

grl_negation_demo:
	cargo run --features backward-chaining --example grl_negation_demo

explanation_demo:
	cargo run --features backward-chaining --example explanation_demo

disjunction_demo:
	cargo run --features backward-chaining --example disjunction_demo

grl_or_syntax_demo:
	cargo run --features backward-chaining --example grl_or_syntax_demo

stream_join_demo:
	cargo run --features streaming --example stream_join_demo