runmat_package/resolve/
request.rs1use crate::{
2 CanonicalPackageId, ContentDigest, DependencyGroup, PackageAlias, TargetEnvironment,
3 TargetPredicate,
4};
5use semver::{Version, VersionReq};
6use serde::{Deserialize, Serialize};
7use std::collections::BTreeSet;
8
9#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
10pub struct ResolutionRequirement {
11 pub alias: PackageAlias,
12 pub package: CanonicalPackageId,
13 pub version: VersionReq,
14 pub group: DependencyGroup,
15 pub optional: bool,
16 pub default_features: bool,
17 pub features: BTreeSet<String>,
18 #[serde(skip_serializing_if = "Option::is_none")]
19 pub target: Option<TargetPredicate>,
20}
21
22#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
23pub struct ResolutionRequest {
24 pub root: String,
25 pub requirements: Vec<ResolutionRequirement>,
26 pub groups: BTreeSet<DependencyGroup>,
27 pub root_features: BTreeSet<String>,
28 pub environment: TargetEnvironment,
29 pub runmat_version: Version,
30 pub offline: bool,
31 pub locked_instances: BTreeSet<ContentDigest>,
32 #[serde(skip_serializing_if = "Option::is_none")]
33 pub update_packages: Option<BTreeSet<CanonicalPackageId>>,
34}