pub enum CachePolicy {
Auto,
Refresh,
ReadOnly,
Only,
Off,
}Expand description
How an open may use the snapshot cache.
One explicit axis rather than a pair of booleans, because “did this answer touch the filesystem” and “did it leave a trace” are the two questions a caller actually has, and a boolean pair can express combinations that have no meaning.
Variants§
Auto
Read the snapshot, revalidate it, and write it back when the scan is complete.
A root has one cache path, and its snapshot carries the scan scope that wrote it. A read under another scope normally treats that snapshot as absent and scans cold. The lawful exception is a controls-off request with the same entry identity: it projects a controls-on snapshot into the requested blind scope and never replaces the stronger image with that projection.
Every default request observes .gitignore control state – the one-shot
fdu <dir> and prepare_report, fdu --watch <dir>, and a default open –
so they share one scope: an open or a watch starts warm from a one-shot report’s
snapshot, and a report that reads the snapshot, as content analysis does, starts
warm from theirs. A request that turns ScanConfig::read_controls off is a second
scope, but every route can start from a default snapshot by discarding its control
tier while loading. A summary-only report that turned observation off saves nothing
and replaces nothing.
Refresh
Ignore any snapshot, scan cold, and rewrite it. The benchmark control.
ReadOnly
Read and revalidate, but never write. A warm answer that leaves no trace.
Only
Answer from the snapshot alone, without touching the tree.
Fails when no usable snapshot exists: there is no data to answer with, and silently falling back to a scan would make the fast path unpredictable.
Off
Ignore the snapshot entirely and leave nothing behind.
Implementations§
Source§impl CachePolicy
impl CachePolicy
Sourcepub fn writes(self) -> bool
pub fn writes(self) -> bool
Whether this policy may write a snapshot back.
Public because a caller deciding whether to prepare a cache directory, or to warn that a run will leave nothing behind, is asking about the policy it was handed – and the alternative is matching on the variants, which is the same knowledge copied into every caller.