this-me 0.3.2

Rust ground for the modern .me semantic kernel.
Documentation
use this_me::kernel::{Kernel, Value};

fn run() -> Result<(), Box<dyn std::error::Error>> {
    let mut me = Kernel::new();

    me.claim_identity("Jabellae")?;
    assert_eq!(me.active_identity(), Some("jabellae"));

    me.postulate("wallet.income", 100_u64)?;
    me.postulate("wallet.expenses", 40_u64)?;
    me.derive("wallet", "total", "income - expenses")?;
    assert_eq!(me.read("wallet.total"), Some(&Value::from(60_f64)));

    me.pointer("profile.wallet", "wallet")?;
    assert_eq!(me.read("profile.wallet.total"), Some(&Value::from(60_f64)));

    me.query(
        "profile.summary",
        ["profile.wallet.total", "profile.missing"],
    )?;
    assert_eq!(
        me.read("profile.summary"),
        Some(&Value::Array(vec![Value::from(60_f64), Value::Null]))
    );

    me.secret("wallet.hidden", "owner-secret")?;
    me.postulate("wallet.hidden.note", "private")?;
    assert_eq!(me.read("wallet.hidden.note"), Some(&Value::from("private")));
    assert_eq!(me.read_public("wallet.hidden.note"), None);

    me.remove("wallet.expenses")?;
    assert_eq!(me.read("wallet.expenses"), None);

    println!("operator memories = {}", me.memories().len());
    Ok(())
}

fn main() -> Result<(), Box<dyn std::error::Error>> {
    run()
}

#[test]
fn example_runs() {
    run().unwrap();
}