cargo_lock/
package.rs

1//! Rust packages enumerated in `Cargo.lock`
2
3mod checksum;
4mod name;
5mod source;
6
7pub use self::{
8    checksum::Checksum,
9    name::Name,
10    source::{GitReference, SourceId, SourceKind},
11};
12pub use semver::Version;
13
14use crate::dependency::Dependency;
15use serde::{Deserialize, Serialize};
16
17/// Information about a Rust package (as sourced from `Cargo.lock`)
18#[derive(Clone, Debug, Deserialize, Eq, PartialEq, PartialOrd, Ord, Serialize)]
19pub struct Package {
20    /// Name of the package
21    pub name: Name,
22
23    /// Version of the package
24    pub version: Version,
25
26    /// Source identifier for the package
27    pub source: Option<SourceId>,
28
29    /// Checksum for this package
30    pub checksum: Option<Checksum>,
31
32    /// Dependencies of the package
33    #[serde(default, skip_serializing_if = "Vec::is_empty")]
34    pub dependencies: Vec<Dependency>,
35
36    /// Replace directive
37    pub replace: Option<Dependency>,
38}