pub struct CanonicalId { /* private fields */ }Expand description
Canonical identifier for a component.
This provides a stable, comparable identifier across different SBOM formats. The identifier is derived from the PURL when available, falling back through a tiered strategy to ensure stability.
Implementations§
Source§impl CanonicalId
impl CanonicalId
Sourcepub fn from_name_version(name: &str, version: Option<&str>) -> Self
pub fn from_name_version(name: &str, version: Option<&str>) -> Self
Create a new canonical ID from name and version
Sourcepub fn synthetic(group: Option<&str>, name: &str, version: Option<&str>) -> Self
pub fn synthetic(group: Option<&str>, name: &str, version: Option<&str>) -> Self
Create a synthetic canonical ID from group, name, and version
This provides a stable identifier when primary identifiers (PURL, CPE, SWID)
are not available. The format is: group:name@version or name@version.
Sourcepub fn from_format_id(id: &str) -> Self
pub fn from_format_id(id: &str) -> Self
Create a new canonical ID from a format-specific identifier
Warning: Format-specific IDs (like bom-ref UUIDs) are often unstable
across SBOM regenerations. Use synthetic() or other methods when possible.
Sourcepub fn from_swhid(swhid: &str) -> Self
pub fn from_swhid(swhid: &str) -> Self
Create from a Software Heritage persistent identifier (SWHID).
SWHIDs are content-addressed identifiers of the form
swh:1:<kind>:<sha1-hex>[;<qualifier>=<value>...].
Named explicitly by CRA prEN 40000-1-3 [PRE-7-RQ-07] alongside PURL/CPE.
Falls back to a FormatSpecific identifier (marked unstable) if the
input does not look like a valid SWHID.
Sourcepub fn from_swhid_object(obj: &SwhidObject) -> Self
pub fn from_swhid_object(obj: &SwhidObject) -> Self
Create from a structured SwhidObject (preferred internal path).
Trait Implementations§
Source§impl Clone for CanonicalId
impl Clone for CanonicalId
Source§fn clone(&self) -> CanonicalId
fn clone(&self) -> CanonicalId
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 CanonicalId
impl Debug for CanonicalId
Source§impl<'de> Deserialize<'de> for CanonicalId
impl<'de> Deserialize<'de> for CanonicalId
Source§fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
Source§impl Display for CanonicalId
impl Display for CanonicalId
impl Eq for CanonicalId
Source§impl Hash for CanonicalId
impl Hash for CanonicalId
Source§impl PartialEq for CanonicalId
impl PartialEq for CanonicalId
Auto Trait Implementations§
impl Freeze for CanonicalId
impl RefUnwindSafe for CanonicalId
impl Send for CanonicalId
impl Sync for CanonicalId
impl Unpin for CanonicalId
impl UnsafeUnpin for CanonicalId
impl UnwindSafe for CanonicalId
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,
impl<T> DeserializeOwned for Twhere
T: for<'de> Deserialize<'de>,
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 moreSource§impl<T> Pointable for T
impl<T> Pointable for T
Source§impl<T> PolicyExt for Twhere
T: ?Sized,
impl<T> PolicyExt for Twhere
T: ?Sized,
Source§impl<T> ToCompactString for Twhere
T: Display,
impl<T> ToCompactString for Twhere
T: Display,
Source§fn try_to_compact_string(&self) -> Result<CompactString, ToCompactStringError>
fn try_to_compact_string(&self) -> Result<CompactString, ToCompactStringError>
ToCompactString::to_compact_string() Read moreSource§fn to_compact_string(&self) -> CompactString
fn to_compact_string(&self) -> CompactString
CompactString. Read moreSource§impl<T> ToStringFallible for Twhere
T: Display,
impl<T> ToStringFallible for Twhere
T: Display,
Source§fn try_to_string(&self) -> Result<String, TryReserveError>
fn try_to_string(&self) -> Result<String, TryReserveError>
ToString::to_string, but without panic on OOM.