pub struct SectionHashes {
pub components: u64,
pub dependencies: u64,
pub licenses: u64,
pub vulnerabilities: u64,
}Expand description
Section-level hashes for incremental change detection.
Fields§
§components: u64Hash of all components
dependencies: u64Hash of all dependency edges
licenses: u64Hash of all licenses
vulnerabilities: u64Hash of all vulnerabilities
Implementations§
Source§impl SectionHashes
impl SectionHashes
Sourcepub fn from_sbom(sbom: &NormalizedSbom) -> Self
pub fn from_sbom(sbom: &NormalizedSbom) -> Self
Compute section hashes for an SBOM.
CORRECTNESS CONTRACT: each section hash must cover EVERY input its
section computer reads — diff_sections splices the previous pair’s
section verbatim whenever a hash is unchanged, so an uncovered field
silently serves a stale diff (a vulnerability moving between
components and an edge scope flip both did exactly that). A hash that
covers too much only costs a spurious recompute; one that covers too
little is a correctness bug.
Hashes are order-sensitive by design: reordering only ever produces a false “changed”, which is safe.
Sourcepub const fn changed_sections(&self, other: &Self) -> ChangedSections
pub const fn changed_sections(&self, other: &Self) -> ChangedSections
Check which sections differ between two hash sets.
Trait Implementations§
Source§impl Clone for SectionHashes
impl Clone for SectionHashes
Source§fn clone(&self) -> SectionHashes
fn clone(&self) -> SectionHashes
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreSource§impl Debug for SectionHashes
impl Debug for SectionHashes
impl Eq for SectionHashes
Source§impl PartialEq for SectionHashes
impl PartialEq for SectionHashes
impl StructuralPartialEq for SectionHashes
Auto Trait Implementations§
impl Freeze for SectionHashes
impl RefUnwindSafe for SectionHashes
impl Send for SectionHashes
impl Sync for SectionHashes
impl Unpin for SectionHashes
impl UnsafeUnpin for SectionHashes
impl UnwindSafe for SectionHashes
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<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
key and return true if they are equal.Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
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