Module cargo::core::compiler::unit_dependencies
source · Expand description
Constructs the dependency graph for compilation.
Rust code is typically organized as a set of Cargo packages. The
dependencies between the packages themselves are stored in the
Resolve struct. However, we can’t use that information as is for
compilation! A package typically contains several targets, or crates,
and these targets has inter-dependencies. For example, you need to
compile the lib target before the bin one, and you need to compile
build.rs before either of those.
So, we need to lower the Resolve, which specifies dependencies between
packages, to a graph of dependencies between their targets, and this
is exactly what this module is doing! Well, almost exactly: another
complication is that we might want to compile the same target several times
(for example, with and without tests), so we actually build a dependency
graph of Units, which capture these properties.
Structs
Enums
- A boolean-like to indicate if a
Unitis an artifact or not.
Constants
Functions
- Given a
parentunit containing a dependencydepwhose package isartifact_pkg, find all targets inartifact_pkgwhich refer to thedeps artifact declaration and turn them into units. Due to the nature of artifact dependencies, a single dependency in a manifest can cause one or more targets to be build, for instance withartifact = ["bin:a", "bin:b", "staticlib"], which is very different from normal dependencies which cause only a single unit to be created. - Add the standard library units to the
unit_dependencies. - Then entry point for building a dependency graph of compilation units.
- Find artifacts for all
depsofunitand add units that build these artifacts toret. - Compute all the dependencies for the standard library.
- Choose the correct mode for dependencies.
- Returns the direct unit dependencies for the given
Unit. - Returns the dependencies needed to run a build script.
- Returns the dependencies necessary to document a package.
- Fill in missing dependencies for units of the
RunCustomBuild - If a build script is scheduled to be run for the package specified by
unit, this function will return the unit to run that build script. - deps_of 🔒Compute the dependencies of a single unit, recursively computing all transitive dependencies.
- Compute all the dependencies of the given root units. The result is stored in state.unit_dependencies.
- Create a new Unit for a dependency from
parenttopkgandtarget.