winget_types/installer/dependencies/
package.rs

1use crate::shared::{PackageIdentifier, PackageVersion};
2
3#[derive(Clone, Debug, Eq, PartialEq, Hash, Ord, PartialOrd)]
4#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
5#[cfg_attr(feature = "serde", serde(rename_all = "PascalCase"))]
6pub struct PackageDependencies {
7    pub package_identifier: PackageIdentifier,
8    #[cfg_attr(feature = "serde", serde(skip_serializing_if = "Option::is_none"))]
9    pub minimum_version: Option<PackageVersion>,
10}
11
12impl PackageDependencies {
13    /// Creates a new `PackageDependencies` from a [`PackageIdentifier`].
14    #[must_use]
15    pub const fn new(package_identifier: PackageIdentifier) -> Self {
16        Self {
17            package_identifier,
18            minimum_version: None,
19        }
20    }
21
22    /// Creates a new `PackageDependencies` from a [`PackageIdentifier`] and a minimum version.
23    #[must_use]
24    pub const fn new_with_min_version(
25        package_identifier: PackageIdentifier,
26        minimum_version: PackageVersion,
27    ) -> Self {
28        Self {
29            package_identifier,
30            minimum_version: Some(minimum_version),
31        }
32    }
33}