pub struct ImpactReport {
pub reached: Vec<ImpactNode>,
pub ambiguous_edges: usize,
pub receiver_unknown_edges: usize,
pub value_edges: usize,
pub truncated: bool,
}Expand description
The result of a resolution-gated impact walk.
Fields§
§reached: Vec<ImpactNode>Symbols transitively affected, sorted, excluding the seed.
ambiguous_edges: usizeCall edges dropped because the name has several definitions and none is
local. Reported rather than hidden: silently truncating a closure is its
own kind of lie, and a non-zero count here means the true impact set may
be larger than reached.
receiver_unknown_edges: usizeCall edges dropped because they are method calls on a receiver of unknown
type (Resolution::ReceiverUnknown). Counted separately from
ambiguous_edges because the cause differs: not “too many candidates”
but “cannot claim any candidate” (#223).
value_edges: usizeCall-graph edges skipped because the reference names a function as a
value rather than calling it — register(helper).
Passing a function is a real dependency, so dropping these silently would under-report. But a value reference is over-inclusive by construction: extraction is per-file, so a local named like a function is indistinguishable from the function, and traversing them would put false edges back into the walk #207 and #223 cleaned up. Counted instead, so non-zero means “go look” rather than nothing at all (#250).
truncated: boolWhether the walk stopped at max_depth with unexplored frontier left.
This means “the set may be incomplete”, not “more definitely exists”: a node reached on the last permitted level was never asked for its own callers, so completeness cannot be claimed either way.
Trait Implementations§
Source§impl Clone for ImpactReport
impl Clone for ImpactReport
Source§fn clone(&self) -> ImpactReport
fn clone(&self) -> ImpactReport
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read more