pub struct UnitInner {Show 13 fields
pub pkg: Package,
pub target: Target,
pub profile: Profile,
pub kind: CompileKind,
pub mode: CompileMode,
pub features: Vec<InternedString>,
pub rustflags: Rc<[String]>,
pub rustdocflags: Rc<[String]>,
pub links_overrides: Rc<BTreeMap<String, BuildOutput>>,
pub artifact: IsArtifact,
pub is_std: bool,
pub dep_hash: u64,
pub artifact_target_for_features: Option<CompileTarget>,
}
Expand description
Internal fields of Unit
which Unit
will dereference to.
Fields§
§pkg: Package
Information about available targets, which files to include/exclude, etc. Basically stuff in
Cargo.toml
.
target: Target
Information about the specific target to build, out of the possible targets in pkg
. Not
to be confused with target-triple (or target architecture …), the target arch for a
build.
profile: Profile
The profile contains information about how the build should be run, including debug level, etc.
kind: CompileKind
Whether this compilation unit is for the host or target architecture.
For example, when cross compiling and using a custom build script, the build script needs to be compiled for the host architecture so the host rustc can use it (when compiling to the target architecture).
mode: CompileMode
The “mode” this unit is being compiled for. See CompileMode
for more details.
features: Vec<InternedString>
The cfg
features to enable for this unit.
This must be sorted.
rustflags: Rc<[String]>
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.
rustdocflags: Rc<[String]>
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.
links_overrides: Rc<BTreeMap<String, BuildOutput>>
Build script override for the given library name.
Any package with a links
value for the given library name will skip
running its build script and instead use the given output from the
config file.
artifact: IsArtifact
§is_std: bool
Whether this is a standard library unit.
dep_hash: u64
A hash of all dependencies of this unit.
This is used to keep the Unit
unique in the situation where two
otherwise identical units need to link to different dependencies. This
can happen, for example, when there are shared dependencies that need
to be built with different features between normal and build
dependencies. See rebuild_unit_graph_shared
for more on why this is
done.
This value initially starts as 0, and then is filled in via a second-pass after all the unit dependencies have been computed.
artifact_target_for_features: Option<CompileTarget>
This is used for target-dependent feature resolution and is copied from
FeaturesFor::ArtifactDep
, if the enum matches the variant.
Implementations§
source§impl UnitInner
impl UnitInner
sourcepub fn requires_upstream_objects(&self) -> bool
pub fn requires_upstream_objects(&self) -> bool
Returns whether compilation of this unit requires all upstream artifacts to be available.
This effectively means that this unit is a synchronization point (if the
return value is true
) that all previously pipelined units need to
finish in their entirety before this one is started.
sourcepub fn is_local(&self) -> bool
pub fn is_local(&self) -> bool
Returns whether or not this is a “local” package.
A “local” package is one that the user can likely edit, or otherwise wants warnings, etc.
sourcepub fn show_warnings(&self, gctx: &GlobalContext) -> bool
pub fn show_warnings(&self, gctx: &GlobalContext) -> bool
Returns whether or not warnings should be displayed for this unit.
Trait Implementations§
source§impl Ord for UnitInner
impl Ord for UnitInner
source§impl PartialOrd for UnitInner
impl PartialOrd for UnitInner
impl Eq for UnitInner
impl StructuralPartialEq for UnitInner
Auto Trait Implementations§
impl Freeze for UnitInner
impl RefUnwindSafe for UnitInner
impl !Send for UnitInner
impl !Sync for UnitInner
impl Unpin for UnitInner
impl UnwindSafe for UnitInner
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
source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
source§unsafe fn clone_to_uninit(&self, dst: *mut T)
unsafe fn clone_to_uninit(&self, dst: *mut T)
clone_to_uninit
)§impl<Q, K> Comparable<K> for Q
impl<Q, K> Comparable<K> for Q
§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
key
and return true
if they are equal.§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>
§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>
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: 304 bytes