Skip to main content

Module dep_cache

Module dep_cache 

Source
Expand description

There are 2 sources of facts for the resolver:

  • The Registry tells us for a Dependency what versions are available to fulfil it.
  • The Summary tells us for a version (and features) what dependencies need to be fulfilled for it to be activated.

These constitute immutable facts, the soled ground truth that all other inference depends on. Theoretically this could all be enumerated ahead of time, but we want to be lazy and only look up things we need to. The compromise is to cache the results as they are computed.

This module impl that cache in all the gory details

Re-exportsΒ§

use crate::resolver::context::ResolverContext; πŸ”’
use crate::resolver::errors::describe_path_in_context; πŸ”’
use crate::resolver::types::ConflictReason; πŸ”’
use crate::resolver::types::DepInfo; πŸ”’
use crate::resolver::types::FeaturesSet; πŸ”’
use crate::resolver::ActivateError; πŸ”’
use crate::resolver::ActivateResult; πŸ”’
use crate::resolver::CliFeatures; πŸ”’
use crate::resolver::RequestedFeatures; πŸ”’
use crate::resolver::ResolveOpts; πŸ”’
use crate::resolver::VersionOrdering; πŸ”’
use crate::resolver::VersionPreferences; πŸ”’
use crate::sources::IndexSummary; πŸ”’
use crate::sources::source::QueryKind; πŸ”’
use crate::util::LocalPollAdapter; πŸ”’
use crate::util::closest_msg; πŸ”’
use crate::util::errors::CargoResult; πŸ”’
use crate::util::interning::INTERNED_DEFAULT; πŸ”’
use crate::util::interning::InternedString; πŸ”’
use crate::workspace::Dependency; πŸ”’
use crate::workspace::FeatureValue; πŸ”’
use crate::workspace::PackageId; πŸ”’
use crate::workspace::PackageIdSpec; πŸ”’
use crate::workspace::PackageIdSpecQuery; πŸ”’
use crate::workspace::Registry; πŸ”’
use crate::workspace::Summary; πŸ”’
use anyhow::Context as _; πŸ”’
use cargo_util::collections::HashMap; πŸ”’
use cargo_util::collections::HashSet; πŸ”’
use std::cell::RefCell; πŸ”’
use std::collections::BTreeSet; πŸ”’
use std::fmt::Write; πŸ”’
use std::rc::Rc; πŸ”’
use std::task::Poll; πŸ”’
use tracing::debug; πŸ”’

StructsΒ§

RegistryQueryer
Wrapper around RegistryQueryerAsync that provides caching and a Poll based interface using LocalPollAdapter.
RegistryQueryerAsync
Requirements πŸ”’
Set of feature and dependency requirements for a package.

EnumsΒ§

RequirementError πŸ”’
An error for a requirement.

FunctionsΒ§

build_requirements πŸ”’
Takes requested features for a single package from the input ResolveOpts and recurses to find all requested features, dependencies and requested dependency features in a Requirements object, returning it to the resolver.
features_enabling_dependency_sorted πŸ”’
Collect any features which enable the optional dependency β€œtarget_dep”.
resolve_features
Returns the features we ended up using and all dependencies and the features we want from each of them.