fn foo(input1: A, input2: B) -> Output
let x1 = foo(a, b1) // reuse some of the work we did
let x2 = foo(a, b2)
manifest() <------------------------ whole_program_ast() <-- type-checking
|
source_text("a.rs") <- ast("a.rs") <-------+
source_text("b.rs") <- ast("b.rs") <-------+
What is Salsa?
fn foo(input1: A, input2: B) -> Output
let x1 = foo(a, b1) // reuse some of the work we did
let x2 = foo(a, b2)
Salsa’s actual model is richer
How does it work?
manifest() <------------------------ whole_program_ast() <-- type-checking
|
source_text("a.rs") <- ast("a.rs") <-------+
|
source_text("b.rs") <- ast("b.rs") <-------+
Key Salsa concepts
Query