pub struct BuildContext<'a, 'cfg> {
    pub ws: &'a Workspace<'cfg>,
    pub config: &'cfg Config,
    pub profiles: Profiles,
    pub build_config: &'a BuildConfig,
    pub extra_compiler_args: HashMap<Unit, Vec<String>>,
    pub packages: PackageSet<'cfg>,
    pub target_data: RustcTargetData<'cfg>,
    pub roots: Vec<Unit>,
    pub unit_graph: UnitGraph,
    pub scrape_units: Vec<Unit>,
    pub all_kinds: HashSet<CompileKind>,
}
Expand description

The build context, containing complete information needed for a build task before it gets started.

It is intended that this is mostly static information. Stuff that mutates during the build can be found in the parent Context. (I say mostly, because this has internal caching, but nothing that should be observable or require &mut.)

As a result, almost every field on BuildContext is public, including

just to name a few. Learn more on each own documentation.

How to use

To prepare a build task, you may not want to use BuildContext::new directly, since it is often too lower-level. Instead, ops::create_bcx is usually what you are looking for.

Fields§

§ws: &'a Workspace<'cfg>

The workspace the build is for.

§config: &'cfg Config

The cargo configuration.

§profiles: Profiles

This contains a collection of compiler flags presets.

§build_config: &'a BuildConfig

Configuration information for a rustc build.

§extra_compiler_args: HashMap<Unit, Vec<String>>

Extra compiler args for either rustc or rustdoc.

§packages: PackageSet<'cfg>

Package downloader.

This holds ownership of the Package objects.

§target_data: RustcTargetData<'cfg>

Information about rustc and the target platform.

§roots: Vec<Unit>

The root units of unit_graph (units requested on the command-line).

§unit_graph: UnitGraph

The dependency graph of units to compile.

§scrape_units: Vec<Unit>

Reverse-dependencies of documented units, used by the rustdoc --scrape-examples flag.

§all_kinds: HashSet<CompileKind>

The list of all kinds that are involved in this build

Implementations§

Information of the rustc this build task will use.

Gets the user-specified linker for a particular host or target.

Gets the host architecture triple.

For example, x86_64-unknown-linux-gnu, would be

  • machine: x86_64,
  • hardware-platform: unknown,
  • operating system: linux-gnu.

Gets the number of jobs specified for this build.

Extra compiler flags to pass to rustc for a given unit.

Although it depends on the caller, in the current Cargo implementation, these flags take precedence over those from BuildContext::extra_args_for.

As of now, these flags come from environment variables and configurations. See TargetInfo.rustflags for more on how Cargo collects them.

Extra compiler flags to pass to rustdoc for a given unit.

Although it depends on the caller, in the current Cargo implementation, these flags take precedence over those from BuildContext::extra_args_for.

As of now, these flags come from environment variables and configurations. See TargetInfo.rustdocflags for more on how Cargo collects them.

Extra compiler args for either rustc or rustdoc.

As of now, these flags come from the trailing args of either cargo rustc or cargo rustdoc.

Returns the set of Docscrape units that have a direct dependency on unit

Returns true if this unit is needed for doing doc-scraping and is also allowed to fail without killing the build.

Auto Trait Implementations§

Blanket Implementations§

Gets the TypeId of self. Read more
Immutably borrows from an owned value. Read more
Mutably borrows from an owned value. Read more

Returns the argument unchanged.

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Should always be Self
The type returned in the event of a conversion error.
Performs the conversion.
The type returned in the event of a conversion error.
Performs the conversion.

Layout§

Note: Most layout information is completely unstable and may even differ between compilations. The only exception is types with certain repr(...) attributes. Please see the Rust Reference’s “Type Layout” chapter for details on type layout guarantees.

Size: 1600 bytes