This PR introduces a new `CacheKey` trait for types that can be used as a cache key. I'm not entirely sure if this is worth the "overhead", but I was surprised to find `HashableHashSet` and got scared when I looked at the time complexity of the `hash` function. These implementations must be extremely slow in hashed collections. I then searched for usages and quickly realized that only the cache uses these `Hash` implementations, where performance is less sensitive. This PR introduces a new `CacheKey` trait to communicate the difference between a hash and computing a key for the cache. The new trait can be implemented for types that don't implement `Hash` for performance reasons, and we can define additional constraints on the implementation: For example, we'll want to enforce portability when we add remote caching support. Using a different trait further allows us not to implement it for types without stable identities (e.g. pointers) or use other implementations than the standard hash function.
16 lines
337 B
TOML
16 lines
337 B
TOML
[package]
|
|
name = "ruff_cache"
|
|
version = "0.0.0"
|
|
publish = false
|
|
edition = { workspace = true }
|
|
rust-version = { workspace = true }
|
|
|
|
[dependencies]
|
|
itertools = { workspace = true }
|
|
globset = { version = "0.4.9" }
|
|
regex = { workspace = true }
|
|
filetime = { version = "0.2.17" }
|
|
|
|
[dev-dependencies]
|
|
ruff_macros = { path = "../ruff_macros" }
|