1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34
|
use salsa::Database;
#[salsa::input]
struct Input {
number: usize,
}
trait Trait {
fn test(self, db: &dyn salsa::Database) -> &Vec<String>;
}
#[salsa::tracked]
impl Trait for Input {
#[salsa::tracked(returns(ref))]
fn test(self, db: &dyn salsa::Database) -> Vec<String> {
(0..self.number(db)).map(|i| format!("test {i}")).collect()
}
}
#[test]
fn invoke() {
salsa::DatabaseImpl::new().attach(|db| {
let input = Input::new(db, 3);
let x: &Vec<String> = input.test(db);
expect_test::expect![[r#"
[
"test 0",
"test 1",
"test 2",
]
"#]]
.assert_debug_eq(x);
})
}
|