rust_rule_miner/lib.rs
1//! # rust-rule-miner
2//!
3//! Automatic rule discovery from historical data using association rule mining,
4//! sequential pattern mining, and graph-based pattern matching.
5//!
6//! ## Quick Start
7//!
8//! ```rust
9//! use rust_rule_miner::{RuleMiner, Transaction, MiningConfig, MiningAlgorithm};
10//! use chrono::Utc;
11//!
12//! // Load transactions
13//! let transactions = vec![
14//! Transaction::new("tx1", vec!["Laptop".to_string(), "Mouse".to_string()], Utc::now()),
15//! Transaction::new("tx2", vec!["Laptop".to_string(), "Keyboard".to_string()], Utc::now()),
16//! ];
17//!
18//! // Configure mining
19//! let config = MiningConfig {
20//! min_support: 0.3,
21//! min_confidence: 0.7,
22//! min_lift: 1.0,
23//! max_time_gap: None,
24//! algorithm: MiningAlgorithm::Apriori,
25//! };
26//!
27//! // Mine rules
28//! let mut miner = RuleMiner::new(config);
29//! miner.add_transactions(transactions).unwrap();
30//! let rules = miner.mine_association_rules().unwrap();
31//! ```
32
33pub mod config;
34pub mod errors;
35pub mod transaction;
36pub mod types;
37
38// Mining algorithms
39pub mod mining;
40
41// Export formats
42pub mod export;
43
44// Graph support
45pub mod graph;
46
47// Data loading from Excel/CSV
48pub mod data_loader;
49pub use data_loader::ColumnMapping;
50
51// Rule engine integration
52#[cfg(feature = "engine")]
53pub mod engine;
54
55// Re-exports
56pub use config::{MiningAlgorithm, MiningConfig};
57pub use errors::{MiningError, Result};
58pub use export::grl::{GrlConfig, RuleTemplate};
59pub use mining::RuleMiner;
60pub use transaction::Transaction;
61pub use types::{
62 AssociationRule, FrequentItemset, ItemSet, Pattern, PatternMetrics, PatternType,
63 SequentialPattern,
64};
65
66#[cfg(test)]
67mod tests {
68 use super::*;
69
70 #[test]
71 fn it_works() {
72 let config = MiningConfig::default();
73 let miner = RuleMiner::new(config);
74 assert!(miner.transaction_count() == 0);
75 }
76}