mirror of
https://github.com/salsa-rs/salsa.git
synced 2025-08-04 19:08:32 +00:00
make query method get
by default
Use `Query.set(db, key, value)` to set. Not sure about this.
This commit is contained in:
parent
d6c7080877
commit
cd5622c6de
10 changed files with 162 additions and 98 deletions
|
@ -1,10 +1,17 @@
|
|||
use crate::implementation::{TestContext, TestContextImpl};
|
||||
use salsa::Query;
|
||||
|
||||
salsa::query_prototype! {
|
||||
crate trait MemoizedInputsContext: TestContext {
|
||||
fn max() for Max;
|
||||
fn input1() for Input1;
|
||||
fn input2() for Input2;
|
||||
fn max(key: ()) -> usize {
|
||||
type Max;
|
||||
}
|
||||
fn input1(key: ()) -> usize {
|
||||
type Input1;
|
||||
}
|
||||
fn input2(key: ()) -> usize {
|
||||
type Input2;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -12,8 +19,8 @@ salsa::query_definition! {
|
|||
crate Max(db: &impl MemoizedInputsContext, (): ()) -> usize {
|
||||
db.log().add("Max invoked");
|
||||
std::cmp::max(
|
||||
db.input1().read(),
|
||||
db.input2().read(),
|
||||
db.input1(()),
|
||||
db.input2(()),
|
||||
)
|
||||
}
|
||||
}
|
||||
|
@ -28,39 +35,39 @@ salsa::query_definition! {
|
|||
|
||||
#[test]
|
||||
fn revalidate() {
|
||||
let query = TestContextImpl::default();
|
||||
let db = &TestContextImpl::default();
|
||||
|
||||
let v = query.max().read();
|
||||
let v = db.max(());
|
||||
assert_eq!(v, 0);
|
||||
query.assert_log(&["Max invoked"]);
|
||||
db.assert_log(&["Max invoked"]);
|
||||
|
||||
let v = query.max().read();
|
||||
let v = db.max(());
|
||||
assert_eq!(v, 0);
|
||||
query.assert_log(&[]);
|
||||
db.assert_log(&[]);
|
||||
|
||||
query.input1().set((), 44);
|
||||
query.assert_log(&[]);
|
||||
Input1.set(db, (), 44);
|
||||
db.assert_log(&[]);
|
||||
|
||||
let v = query.max().read();
|
||||
let v = db.max(());
|
||||
assert_eq!(v, 44);
|
||||
query.assert_log(&["Max invoked"]);
|
||||
db.assert_log(&["Max invoked"]);
|
||||
|
||||
let v = query.max().read();
|
||||
let v = db.max(());
|
||||
assert_eq!(v, 44);
|
||||
query.assert_log(&[]);
|
||||
db.assert_log(&[]);
|
||||
|
||||
query.input1().set((), 44);
|
||||
query.assert_log(&[]);
|
||||
query.input2().set((), 66);
|
||||
query.assert_log(&[]);
|
||||
query.input1().set((), 64);
|
||||
query.assert_log(&[]);
|
||||
Input1.set(db, (), 44);
|
||||
db.assert_log(&[]);
|
||||
Input2.set(db, (), 66);
|
||||
db.assert_log(&[]);
|
||||
Input1.set(db, (), 64);
|
||||
db.assert_log(&[]);
|
||||
|
||||
let v = query.max().read();
|
||||
let v = db.max(());
|
||||
assert_eq!(v, 66);
|
||||
query.assert_log(&["Max invoked"]);
|
||||
db.assert_log(&["Max invoked"]);
|
||||
|
||||
let v = query.max().read();
|
||||
let v = db.max(());
|
||||
assert_eq!(v, 66);
|
||||
query.assert_log(&[]);
|
||||
db.assert_log(&[]);
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue