mirror of
https://github.com/salsa-rs/salsa.git
synced 2025-08-04 19:08:32 +00:00
make dyn Trait
query implementations work
This commit is contained in:
parent
5e2fcc2a17
commit
6f15a440ca
2 changed files with 47 additions and 3 deletions
32
tests/dyn_trait.rs
Normal file
32
tests/dyn_trait.rs
Normal file
|
@ -0,0 +1,32 @@
|
|||
//! Test that you can implement a query using a `dyn Trait` setup.
|
||||
|
||||
#[salsa::database(DynTraitStorage)]
|
||||
#[derive(Default)]
|
||||
struct DynTraitDatabase {
|
||||
runtime: salsa::Runtime<DynTraitDatabase>,
|
||||
}
|
||||
|
||||
impl salsa::Database for DynTraitDatabase {
|
||||
fn salsa_runtime(&self) -> &salsa::Runtime<DynTraitDatabase> {
|
||||
&self.runtime
|
||||
}
|
||||
}
|
||||
|
||||
#[salsa::query_group(DynTraitStorage)]
|
||||
trait DynTrait {
|
||||
#[salsa::input]
|
||||
fn input(&self, x: u32) -> u32;
|
||||
|
||||
fn output(&self, x: u32) -> u32;
|
||||
}
|
||||
|
||||
fn output(db: &dyn DynTrait, x: u32) -> u32 {
|
||||
db.input(x) * 2
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn dyn_trait() {
|
||||
let mut query = DynTraitDatabase::default();
|
||||
query.set_input(22, 23);
|
||||
assert_eq!(query.output(22), 46);
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue