pub struct RustBuild {
pub target: String,
pub features: Vec<String>,
pub cfgs: Vec<String>,
pub compiler_version: String,
pub opt_level: String,
pub lto: String,
pub codegen_units: Option<u32>,
pub panic: String,
pub lockfile_hash: Option<String>,
pub build_command_hash: Option<String>,
pub post_processing_tools: Vec<String>,
pub permitted_execution: Vec<String>,
}Expand description
What a Rust crate was built with.
Recorded rather than assumed: a helper analyses with the compiler it holds, which need not be the one the project builds with, so the version here is the one that produced the answers.
Fields§
§target: StringThe target triple.
features: Vec<String>Enabled cargo features, deduplicated and sorted: they are a set, and nothing about the order they were requested in reaches the compiler.
Each names the package it belongs to, because a feature is declared per
package: one package’s derive and another’s are unrelated, and a bare
list would let either stand for both.
cfgs: Vec<String>--cfg settings, deduplicated and sorted for the same reason.
compiler_version: StringThe compiler that produced the answers.
opt_level: StringOptimization level, as cargo spells it.
lto: StringLink-time optimization setting.
codegen_units: Option<u32>Codegen units, when pinned.
panic: StringPanic strategy.
lockfile_hash: Option<String>A hash of Cargo.lock: the dependency versions are part of what the
source means, and the lockfile is the only place that records them all.
build_command_hash: Option<String>A hash of the command the build was requested with.
post_processing_tools: Vec<String>Post-processing tools declared for this build, in invocation order.
This records build context only. The source scanner never executes a declared tool.
permitted_execution: Vec<String>The classes of execution the run was permitted, sorted and named as a person types them.
Part of the identity because a run allowed to run build scripts reads a program the refused run cannot see: types that only exist after a script has written them resolve in one and not the other. What was permitted rather than what turned out to run — the second is a prediction this side would have to make before doing the work, and a prediction that came out wrong would file the answers under conditions that did not hold.
Implementations§
Trait Implementations§
impl Eq for RustBuild
impl StructuralPartialEq for RustBuild
Auto Trait Implementations§
impl Freeze for RustBuild
impl RefUnwindSafe for RustBuild
impl Send for RustBuild
impl Sync for RustBuild
impl Unpin for RustBuild
impl UnsafeUnpin for RustBuild
impl UnwindSafe for RustBuild
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§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
key and return true if they are equal.