pub struct ResolvedProfile {
pub name: ProfileName,
pub debug: bool,
pub opt_level: OptLevel,
pub assertions: bool,
pub source: ProfileSource,
pub inherits_chain: Vec<ProfileName>,
pub build: Option<ProfileFlags>,
}Expand description
Fully resolved profile.
Scalar fields are typed and concrete; downstream consumers
(build planner, CLI) read this struct directly. build is
the per-profile flag overlay merged root → selected across
inherits_chain — see the field docstring.
Fields§
§name: ProfileName§debug: bool§opt_level: OptLevel§assertions: bool§source: ProfileSource§inherits_chain: Vec<ProfileName>Chain of profile names walked by inheritance, root first.
For built-ins this is [name]; for a custom profile that
inherits from release it is ["release", <custom>].
The chain is also the order used to append each
step’s ProfileDefinition.build into Self::build.
build: Option<ProfileFlags>[profile.<name>] per-profile flag overlay, merged
root-first across inherits_chain via
ProfileFlags::append_layer.
None means no profile in the chain declared
build = Some(_). Some(_) means at least one step
contributed profile flags, even if the resulting
accumulator happens to be empty (uniform shape for
consumers).
#[serde(skip)] because the merged value is computed
from the inherits-chain walk inside
resolve_profile — it isn’t part of the on-disk JSON
schema. cabin metadata’s JSON view of a profile comes
from Self::as_json, which lists fields explicitly;
the resolved build flags surface under
BuildConfiguration.build_flags in metadata output, not
here.
Implementations§
Source§impl ResolvedProfile
impl ResolvedProfile
Sourcepub fn as_json(&self) -> Value
pub fn as_json(&self) -> Value
Compact JSON view used by cabin metadata and by
CABIN_BUILD_CONFIGURATION_JSON. Field order matches the
struct declaration order so the on-disk shape is stable.
Sourcepub fn compile_flags(&self) -> Vec<&'static str>
pub fn compile_flags(&self) -> Vec<&'static str>
Compute the language-neutral compile flags this profile
contributes.
The order is fixed: -O<level> first, then -g when
debug info is requested, then -DNDEBUG when assertions
are off. Determinism matters here because the result lands
in compile_commands.json.
Trait Implementations§
Source§impl Clone for ResolvedProfile
impl Clone for ResolvedProfile
Source§fn clone(&self) -> ResolvedProfile
fn clone(&self) -> ResolvedProfile
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreSource§impl Debug for ResolvedProfile
impl Debug for ResolvedProfile
Source§impl<'de> Deserialize<'de> for ResolvedProfile
impl<'de> Deserialize<'de> for ResolvedProfile
Source§fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
Source§impl PartialEq for ResolvedProfile
impl PartialEq for ResolvedProfile
Source§fn eq(&self, other: &ResolvedProfile) -> bool
fn eq(&self, other: &ResolvedProfile) -> bool
self and other values to be equal, and is used by ==.Source§impl Serialize for ResolvedProfile
impl Serialize for ResolvedProfile
impl Eq for ResolvedProfile
impl StructuralPartialEq for ResolvedProfile
Auto Trait Implementations§
impl Freeze for ResolvedProfile
impl RefUnwindSafe for ResolvedProfile
impl Send for ResolvedProfile
impl Sync for ResolvedProfile
impl Unpin for ResolvedProfile
impl UnsafeUnpin for ResolvedProfile
impl UnwindSafe for ResolvedProfile
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.