# Coarse-grained or hierarchical dependencies ## 2024-10-09 Flip the default. All fields are part of the identity of the tracked struct by default unless themselves tagged as `#[salsa::tracked]`. ## OLD Basic idea is that you should be able to flag a tracked function to call it "coarse": ```rust #[salsa::tracked(coarse)] fn foo(db: &dyn crate::Db) { let x = TrackedStruct::new(...); let y = TrackedStruct::new(...); } ``` If you mark a tracked struct as coarse,