pub struct ResolutionStats {
pub scope: usize,
pub import: usize,
pub scip: usize,
pub compiler_rescued_internal: usize,
pub unresolved_internal: usize,
pub unresolved_external: usize,
pub scip_agree: usize,
pub scip_disagree: usize,
pub scip_external: usize,
}Fields§
§scope: usize§import: usize§scip: usize§compiler_rescued_internal: usizeCorpus-anchored misses subsequently resolved by compiler evidence.
This is a subset of scip/scip_external, retained so the anchored
miss denominator does not absorb compiler hits the heuristic had
classified as external.
unresolved_internal: usizeEvidence pointed into the corpus but binding failed (ambiguity, member missing on a known module/type). This is an anchored miss, not a complete accuracy measure: the anchoring heuristic can still classify a compiler-resolvable corpus reference as external.
unresolved_external: usizeNo corpus-anchored evidence: external imports, builtins, and value-receiver calls without type evidence. Dependency-index (SCIP) territory, not a resolver defect.
scip_agree: usizeReferences bound by both internal evidence and SCIP, split by whether the two agreed on the target — the measured trust level of non-scip edges.
scip_disagree: usize§scip_external: usizeRefs bound to synthesized dependency-surface nodes (D29). Counted
apart from scip and excluded from the cross-check and recall
denominators: internal evidence can never find a symbol with no
in-corpus definition, so mixing these in would fake a regression.
Implementations§
Source§impl ResolutionStats
impl ResolutionStats
pub fn resolved(&self) -> usize
pub fn unresolved(&self) -> usize
pub fn unresolved_rate(&self) -> f64
Sourcepub fn anchored_unresolved_rate(&self) -> Option<f64>
pub fn anchored_unresolved_rate(&self) -> Option<f64>
Anchored unresolved references over references the heuristic itself classified as corpus-anchored. This is useful without a compiler index, but it is not recall: compiler evidence can prove that some references classified as external were actually internal.
None means no references were resolved in this pass. Reporting
that state as 0% would make a no-op build look perfectly accurate.
Trait Implementations§
Source§impl Clone for ResolutionStats
impl Clone for ResolutionStats
Source§fn clone(&self) -> ResolutionStats
fn clone(&self) -> ResolutionStats
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreimpl Copy for ResolutionStats
Source§impl Debug for ResolutionStats
impl Debug for ResolutionStats
Source§impl Default for ResolutionStats
impl Default for ResolutionStats
Source§fn default() -> ResolutionStats
fn default() -> ResolutionStats
impl Eq for ResolutionStats
Source§impl PartialEq for ResolutionStats
impl PartialEq for ResolutionStats
impl StructuralPartialEq for ResolutionStats
Auto Trait Implementations§
impl Freeze for ResolutionStats
impl RefUnwindSafe for ResolutionStats
impl Send for ResolutionStats
impl Sync for ResolutionStats
impl Unpin for ResolutionStats
impl UnsafeUnpin for ResolutionStats
impl UnwindSafe for ResolutionStats
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more