I am curious, at what level of incrementality would RLS operate? My understanding is that RLS will periodically schedule a full rebuild of a crate, and would record a result of that process into some kind of an index (sort of like https://www.kythe.io/). The approach in IntelliJ is, in some sense, the opposite: we index the source code on a per file basis after parsing, but before name resolution and type inference, and then use the indexes to quickly recalculate all the semantic information as the user edits the code.