aprender-contracts 0.33.0

Papers to Math to Contracts in Code — YAML contract parsing, validation, scaffold generation, and Kani harness codegen for provable Rust kernels
Documentation
use provable_contracts::coverage::{coverage_report, overall_percentage};
use provable_contracts::schema::parse_contract;
fn main() {
    let d = std::env::args().nth(1).unwrap_or_else(|| {
        eprintln!("Usage: coverage <dir/> [binding.yaml]");
        std::process::exit(1);
    });
    let mut cs = Vec::new();
    for e in std::fs::read_dir(&d).unwrap().flatten() {
        let p = e.path();
        if p.extension().and_then(|e| e.to_str()) == Some("yaml") {
            let s = p
                .file_stem()
                .and_then(|s| s.to_str())
                .unwrap_or("x")
                .to_string();
            if let Ok(c) = parse_contract(&p) {
                cs.push((s, c));
            }
        }
    }
    cs.sort_by(|a, b| a.0.cmp(&b.0));
    let refs: Vec<_> = cs.iter().map(|(s, c)| (s.clone(), c)).collect();
    let r = coverage_report(&refs, None);
    println!(
        "Coverage: {:.1}% | Contracts: {} | Obligations: {}",
        overall_percentage(&r),
        r.totals.contracts,
        r.totals.obligations
    );
}