ruvector/crates/ruvector-dag/examples/basic_usage.rs
Claude ec323f5a4d chore(dag): optimize codebase - fix warnings and format code
- Fix unused variable warnings with underscore prefixes
- Add #[allow(dead_code)] for API-reserved fields
- Run cargo fmt for consistent formatting
- Apply cargo clippy --fix for lint improvements
- Reduce ruvector-dag lib warnings from 17 to 0
- Improve code quality across 60 files

Changes include:
- qudag/client.rs: prefix unused params (_pattern, _proposal_id, _since_round)
- sona/engine.rs: prefix unused param (_similar), add deprecated match arms
- sona/reasoning_bank.rs: prefix unused var (_dim)
- attention/*.rs: consistent formatting and minor improvements
- examples/exotic/*.rs: formatting for all 7 coherence-sensing examples
2025-12-30 02:08:55 +00:00

73 lines
2.1 KiB
Rust

//! Basic usage example for Neural DAG Learning
use ruvector_dag::dag::{OperatorNode, OperatorType, QueryDag};
fn main() {
println!("=== Neural DAG Learning - Basic Usage ===\n");
// Create a new DAG
let mut dag = QueryDag::new();
// Add nodes representing query operators
println!("Building query DAG...");
let scan = dag.add_node(OperatorNode::seq_scan(0, "users"));
println!(" Added SeqScan on 'users' (id: {})", scan);
let filter = dag.add_node(OperatorNode::filter(1, "age > 18"));
println!(" Added Filter 'age > 18' (id: {})", filter);
let sort = dag.add_node(OperatorNode::sort(2, vec!["name".to_string()]));
println!(" Added Sort by 'name' (id: {})", sort);
let limit = dag.add_node(OperatorNode::limit(3, 10));
println!(" Added Limit 10 (id: {})", limit);
let result = dag.add_node(OperatorNode::new(4, OperatorType::Result));
println!(" Added Result (id: {})", result);
// Connect nodes
dag.add_edge(scan, filter).unwrap();
dag.add_edge(filter, sort).unwrap();
dag.add_edge(sort, limit).unwrap();
dag.add_edge(limit, result).unwrap();
println!("\nDAG Statistics:");
println!(" Nodes: {}", dag.node_count());
println!(" Edges: {}", dag.edge_count());
// Compute topological order
let order = dag.topological_sort().unwrap();
println!("\nTopological Order: {:?}", order);
// Compute depths
let depths = dag.compute_depths();
println!("\nNode Depths:");
for (id, depth) in &depths {
println!(" Node {}: depth {}", id, depth);
}
// Get children
println!("\nNode Children:");
for node_id in 0..5 {
let children = dag.children(node_id);
println!(" Node {}: {:?}", node_id, children);
}
// Demonstrate iterators
println!("\nDFS Traversal:");
for (i, node_id) in dag.dfs_iter(scan).enumerate() {
if i < 10 {
println!(" Visit: {}", node_id);
}
}
println!("\nBFS Traversal:");
for (i, node_id) in dag.bfs_iter(scan).enumerate() {
if i < 10 {
println!(" Visit: {}", node_id);
}
}
println!("\n=== Example Complete ===");
}