1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
use me3_binary::Program;

#[salsa::jar(db = Db)]
pub struct Jar();

pub trait Db: salsa::DbWithJar<Jar> {
    fn program(&self) -> Program<'_>;
}

#[derive(Default)]
#[salsa::db(Jar)]
struct OnlineProgramDatabase {
    storage: salsa::Storage<Self>,
}

impl salsa::Database for OnlineProgramDatabase {}
impl Db for OnlineProgramDatabase {
    fn program(&self) -> Program<'_> {
        unsafe { Program::current() }
    }
}