Tracking issue for cfg_select
(formerly cfg_match
) · Issue #115585 · rust-lang/rust (original) (raw)
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
Rename cfg_match! to cfg_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.