Skip to main content

runmat_package/resolve/
request.rs

1use 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}