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}