# 2015-04-16
## Lukas put a PR
* panic
* fixed point
* PR https://github.com/salsa-rs/salsa/pull/798 adds immediate fallback
* have at least one query that would not converge so fixed point is not going to work
* maybe make it `cycle_fn = ()` so that it is more clear
* or `cycle_result = X`
* https://github.com/salsa-rs/salsa/pull/797
## rust-analyzer
- more memory usage complaints
- (an aside about facebook's metrics)
- talking about `infer`; overhead of memoization
- should be able to drop `Arc`s in rust-analyzer and just use a tracked struct's tracked fields
Discussion about how to replace "firewall" queries:
```rust
#[salsa::tracked]
struct TraitImpl {
trait_name: String, // part of the identity
#[tracked]
where_clauses: Vec<WhereClause>, // tracked field
}
fn outer() {
let data = get_implementations(); // this would be green if the same set of tracked structs are created
// only red if: a change to an untracked field
for s in data {
do_something(s); // these would re-execute if they read from a red tracked field
}
}
fn get_implementations() -> Vec<TraitImpl> {
.....
}
// the query contents in rust-analyzer today:
pub struct TraitImpls {
// If the `Option<TyFingerprint>` is `None`, the impl may apply to any self type.
map: FxHashMap<TraitId, FxHashMap<Option<TyFingerprint>, Box<[ImplId]>>>,
}
```