eggplant 0.2.5

eggplant is a High-Level Rust API crate for Egglog
Documentation
use eggplant::{basic_tx_vt, prelude::*};
use std::time::Instant;

#[eggplant::dsl]
enum Cons {
    Value { v: i64, con: Cons },
    End {},
}

#[eggplant::dsl]
struct VecCon {
    v: VecContainer<Cons>,
}

#[eggplant::dsl]
enum Root {
    RootCons { v: VecCon },
}

fn main() {
    env_logger::init();
    let a = Instant::now();

    let mut count = 0;
    let root = loop {
        let node1 = Value::new(5, &End::new());
        let node2 = Value::new(5 + 1, &node1);
        let node3 = Value::new(2, &node2);
        let root = RootCons::<MyTx>::new(&VecCon::new(vec![&node1, &node2, &node3]));
        let _m = root.cur_sym();
        if count == 99 {
            break root;
        }
        count += 1;
    };
    root.commit();
    println!("push elpased: {:?}", a.elapsed());
    MyTx::sgl().to_dot("egraph.dot");
}

basic_tx_vt!(MyTx);