Open
Description
Provides a native way to easily manage multiple conditional flags without having to rewrite each clause multiple times.
Public API
cfg_select! {
unix => {
fn foo() { /* unix specific functionality */ }
}
target_pointer_width = "32" => {
fn foo() { /* non-unix, 32-bit functionality */ }
}
_ => {
fn foo() { /* fallback implementation */ }
}
}
Steps / History
- Implementation (Add the
cfg_match!
macro #115416) - Rename from
cfg_match
tocfg_select
Renamecfg_match!
tocfg_select!
#137198 - Final comment period
- Stabilization PR
Unresolved Questions
What should the final syntax be? A match-like syntax feels more natural in the sense that each macro fragment resembles an arm.Should the macro be supported directly by a language feature?What should the feature name be?cfg_match
conflicts with the already existingcfg_match
crate.How can we support usage in both expression-position and item position?- Support trailing commas to have similar grammar as
match
statements.