prolangkit 0.1.16

A set of language-agnostic utilities for langdev
Documentation
use prolangkit::db::{Arena, DbAccess, Id, Mapping, StringStore};

fn main() {
    let mut db = Db::default();

    let foo: Id<Foo> = db.insert(Foo(12));
    let _foo = db.get(foo);

    db.assoc(foo, Baz("bruh"));
    let buh = db.get_assoc_mut::<Baz>(foo);
}

#[derive(Default)]
pub struct Foo(u32);

#[derive(Default)]
pub struct Bar(f32);

#[derive(Default)]
pub struct Baz(&'static str);

#[derive(DbAccess, Default)]
pub struct Db {
    foos: Arena<Foo>,
    bars: Arena<Bar>,
    bazes: Mapping<Foo, Baz>,
    strs: StringStore,
}