use std::path::Path;
use vidya::compare::compare;
use vidya::loader::load_all;
use vidya::search::search;
use vidya::{Language, SearchQuery, Topic};
fn main() {
let registry = load_all(Path::new("content")).expect("content directory should load");
println!("Loaded {} concepts:", registry.list().len());
for concept in registry.list() {
let langs: Vec<_> = concept.examples.keys().map(|l| l.to_string()).collect();
println!(" {} — {} languages", concept.id, langs.len());
}
println!("\nSearch for 'quantum':");
let results = search(®istry, &SearchQuery::text("quantum"));
for r in &results {
println!(" {} (score: {:.1})", r.title, r.score);
}
println!("\nSearch tag 'security':");
let results = search(®istry, &SearchQuery::tagged(vec!["security".into()]));
for r in &results {
println!(" {} (score: {:.1})", r.title, r.score);
}
let mut query = SearchQuery::text("error");
query.language = Some(Language::Rust);
println!("\nSearch 'error' (Rust only):");
let results = search(®istry, &query);
for r in &results {
println!(" {} (score: {:.1})", r.title, r.score);
}
println!("\nCompare 'algorithms' — Rust vs Python vs Go:");
if let Ok(cmp) = compare(
®istry,
"algorithms",
&[Language::Rust, Language::Python, Language::Go],
) {
println!(" Concept: {}", cmp.concept_title);
for impl_ in &cmp.implementations {
println!(" {} — {} chars of code", impl_.language, impl_.code.len());
}
}
println!("\nKernel Topics:");
for concept in registry.by_topic(&Topic::KernelTopics) {
println!(" {}: {}", concept.title, concept.description);
println!(" Best practices: {}", concept.best_practices.len());
println!(" Gotchas: {}", concept.gotchas.len());
println!(" Performance notes: {}", concept.performance_notes.len());
}
if let Some(concept) = registry.get("security") {
println!("\nSecurity gotchas:");
for g in &concept.gotchas {
println!(" ⚠ {}", g.title);
println!(" {}", g.explanation);
if let Some(ref bad) = g.bad_example {
println!(" BAD: {bad}");
}
if let Some(ref good) = g.good_example {
println!(" GOOD: {good}");
}
}
}
if let Some(concept) = registry.get("quantum_computing") {
println!("\nQuantum computing performance notes:");
for p in &concept.performance_notes {
println!(" ⚡ {}", p.title);
if let Some(ref ev) = p.evidence {
println!(" Evidence: {ev}");
}
}
}
}