#[salsa::query_group(HelloWorld)] trait HelloWorldDatabase: salsa::Database { #[salsa::input] fn input(&self, a: u32, b: u32) -> u32; fn none(&self) -> u32; fn one(&self, k: u32) -> u32; fn two(&self, a: u32, b: u32) -> u32; fn trailing(&self, a: u32, b: u32) -> u32; } fn none(_db: &dyn HelloWorldDatabase) -> u32 { 22 } fn one(_db: &dyn HelloWorldDatabase, k: u32) -> u32 { k * 2 } fn two(_db: &dyn HelloWorldDatabase, a: u32, b: u32) -> u32 { a * b } fn trailing(_db: &dyn HelloWorldDatabase, a: u32, b: u32) -> u32 { a - b } #[salsa::database(HelloWorld)] #[derive(Default)] struct DatabaseStruct { storage: salsa::Storage, } impl salsa::Database for DatabaseStruct {} #[test] fn execute() { let mut db = DatabaseStruct::default(); // test what happens with inputs: db.set_input(1, 2, 3); assert_eq!(db.input(1, 2), 3); assert_eq!(db.none(), 22); assert_eq!(db.one(11), 22); assert_eq!(db.two(11, 2), 22); assert_eq!(db.trailing(24, 2), 22); }