pub struct BuildContext<'a, 'gctx> {
pub ws: &'a Workspace<'gctx>,
pub gctx: &'gctx GlobalContext,
pub logger: Option<&'a BuildLogger>,
pub profiles: Profiles,
pub build_config: &'a BuildConfig,
pub extra_compiler_args: HashMap<Unit, Vec<String>>,
pub packages: PackageSet<'gctx>,
pub target_data: RustcTargetData<'gctx>,
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 BuildRunner. (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
- a resolved
UnitGraphof your dependencies, - a
Profilescontaining compiler flags presets, - a
RustcTargetDatacontaining host and target platform information, - and a
PackageSetfor further package downloads,
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.
After a BuildContext is built, the next stage of building is handled in BuildRunner.
Fields§
§ws: &'a Workspace<'gctx>The workspace the build is for.
gctx: &'gctx GlobalContextThe cargo context.
logger: Option<&'a BuildLogger>Build logger for -Zbuild-analysis.
profiles: ProfilesThis contains a collection of compiler flags presets.
build_config: &'a BuildConfigConfiguration information for a rustc build.
extra_compiler_args: HashMap<Unit, Vec<String>>Extra compiler args for either rustc or rustdoc.
packages: PackageSet<'gctx>Package downloader.
This holds ownership of the Package objects.
target_data: RustcTargetData<'gctx>Information about rustc and the target platform.
roots: Vec<Unit>The root units of unit_graph (units requested on the command-line).
unit_graph: UnitGraphThe 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§
Source§impl<'a, 'gctx> BuildContext<'a, 'gctx>
impl<'a, 'gctx> BuildContext<'a, 'gctx>
pub fn new( ws: &'a Workspace<'gctx>, logger: Option<&'a BuildLogger>, packages: PackageSet<'gctx>, build_config: &'a BuildConfig, profiles: Profiles, extra_compiler_args: HashMap<Unit, Vec<String>>, target_data: RustcTargetData<'gctx>, roots: Vec<Unit>, unit_graph: UnitGraph, scrape_units: Vec<Unit>, ) -> CargoResult<BuildContext<'a, 'gctx>>
Sourcepub fn host_triple(&self) -> InternedString
pub fn host_triple(&self) -> InternedString
Gets the host architecture triple.
For example, x86_64-unknown-linux-gnu, would be
- machine:
x86_64, - hardware-platform:
unknown, - operating system:
linux-gnu.
Source§impl BuildContext<'_, '_>
impl BuildContext<'_, '_>
Sourcepub fn scrape_units_have_dep_on<'a>(&'a self, unit: &'a Unit) -> Vec<&'a Unit>
pub fn scrape_units_have_dep_on<'a>(&'a self, unit: &'a Unit) -> Vec<&'a Unit>
Returns the set of Docscrape units that have a direct dependency on unit.
RunCustomBuild units are excluded because we allow failures
from type checks but not build script executions.
A plain old cargo doc would just die if a build script execution fails,
there is no reason for -Zrustdoc-scrape-examples to keep going.
Sourcepub fn unit_can_fail_for_docscraping(&self, unit: &Unit) -> bool
pub fn unit_can_fail_for_docscraping(&self, unit: &Unit) -> bool
Returns true if this unit is needed for doing doc-scraping and is also allowed to fail without killing the build.
Auto Trait Implementations§
impl<'a, 'gctx> !Freeze for BuildContext<'a, 'gctx>
impl<'a, 'gctx> !RefUnwindSafe for BuildContext<'a, 'gctx>
impl<'a, 'gctx> !Send for BuildContext<'a, 'gctx>
impl<'a, 'gctx> !Sync for BuildContext<'a, 'gctx>
impl<'a, 'gctx> Unpin for BuildContext<'a, 'gctx>
impl<'a, 'gctx> !UnwindSafe for BuildContext<'a, 'gctx>
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
§impl<T> Instrument for T
impl<T> Instrument for T
§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more§impl<T> Pointable for T
impl<T> Pointable for T
§impl<T> WithSubscriber for T
impl<T> WithSubscriber for T
§fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>where
S: Into<Dispatch>,
fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>where
S: Into<Dispatch>,
§fn with_current_subscriber(self) -> WithDispatch<Self>
fn with_current_subscriber(self) -> WithDispatch<Self>
impl<T> ErasedDestructor for Twhere
T: 'static,
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: 1664 bytes