Expand description
Features — public, additive, named-boolean capabilities used to gate optional dependencies and per-edge feature requests.
A Feature may be enabled by the package’s user or by a
downstream consumer. Feature implication arrows form a directed
graph; the resolver expands defaults plus user requests by
transitive closure. Feature entries can enable optional
dependencies (dep:foo) and request features on dependency
packages (crate/feature).
All declarations live on cabin_core::Package. Selection happens
through BuildConfiguration::resolve, which consumes the
declarations plus a SelectionRequest (typically built from CLI
flags by cabin).
Structs§
- Build
Configuration - Resolved, validated build configuration. Drives:
- Build
Configuration Input - Bundled inputs for
BuildConfiguration::resolve. - Features
[features]declarations for a package.- Selection
Request - User-supplied flag inputs that select features.
Built by
cabinfrom--features,--all-features, and--no-default-features. - Toolchain
Summary - Lightweight, non-machine-specific summary of the resolved
toolchain. Stored on every
BuildConfigurationso the fingerprint reflects “which compiler did this build use” without pinning the local absolute path.
Enums§
- Feature
Entry - Typed view of a single right-hand-side entry in a
[features]list (feature_name,dep:dependency_name, ordependency_name/feature_name). - Invalid
Feature Entry Kind - Why parsing a feature-list entry failed. Carried inside
ValidationError::InvalidFeatureEntryso user errors keep the original string and the structural reason it was rejected.
Constants§
- DEFAULT_
FEATURE_ KEY - The reserved feature group name. The list of names mapped to this
key in
[features]is the package’s “default” feature set: the Features Cabin enables when the user does not pass--no-default-features.