CycloneDX / cyclonedx-rust-cargo

Creates CycloneDX Software Bill of Materials (SBOM) from Rust (Cargo) projects
https://cyclonedx.org/
Apache License 2.0
97 stars 43 forks source link

cyclonedx_bom: make Cpe constructable #739

Closed ModestMannfred closed 1 month ago

ModestMannfred commented 2 months ago

The current implementation of Cpe in https://github.com/CycloneDX/cyclonedx-rust-cargo/blob/main/cyclonedx-bom/src/models/component.rs does not allow access to the member variable and provides no constructors. Some way to construct Cpes in applications which use the bom library should be provided.

eg.: let cpe = Cpe(cpe_string);

Result:

note: constructor is not visible here due to private fields
   --> /home/scott/.cargo/registry/src/index.crates.io-6f17d22bba15001f/cyclonedx-bom-0.4.3/src/models/component.rs:439:16
    |
439 | pub struct Cpe(pub(crate) String);
    |                ^^^^^^^^^^^^^^^^^ private field

We can implement, if you let us know if you prefer public member variable, a newconstructor or conversion from Stringor &str, etc. Purl, for instance implements both newand FromStr

Shnatsel commented 2 months ago

Having both new() and FromStr sounds good to me. I'd be happy to merge a PR with this change.

ModestMannfred commented 2 months ago

Ok, will do. But I need some time because I'm working on something else right now. Thanks!