Skip to main content

operators/
operators.rs

1use this_me::kernel::{Kernel, Value};
2
3fn run() -> Result<(), Box<dyn std::error::Error>> {
4    let mut me = Kernel::new();
5
6    me.claim_identity("Jabellae")?;
7    assert_eq!(me.active_identity(), Some("jabellae"));
8
9    me.postulate("wallet.income", 100_u64)?;
10    me.postulate("wallet.expenses", 40_u64)?;
11    me.derive("wallet", "total", "income - expenses")?;
12    assert_eq!(me.read("wallet.total"), Some(&Value::from(60_f64)));
13
14    me.pointer("profile.wallet", "wallet")?;
15    assert_eq!(me.read("profile.wallet.total"), Some(&Value::from(60_f64)));
16
17    me.query(
18        "profile.summary",
19        ["profile.wallet.total", "profile.missing"],
20    )?;
21    assert_eq!(
22        me.read("profile.summary"),
23        Some(&Value::Array(vec![Value::from(60_f64), Value::Null]))
24    );
25
26    me.secret("wallet.hidden", "owner-secret")?;
27    me.postulate("wallet.hidden.note", "private")?;
28    assert_eq!(me.read("wallet.hidden.note"), Some(&Value::from("private")));
29    assert_eq!(me.read_public("wallet.hidden.note"), None);
30
31    me.remove("wallet.expenses")?;
32    assert_eq!(me.read("wallet.expenses"), None);
33
34    println!("operator memories = {}", me.memories().len());
35    Ok(())
36}
37
38fn main() -> Result<(), Box<dyn std::error::Error>> {
39    run()
40}
41
42#[test]
43fn example_runs() {
44    run().unwrap();
45}