Add feature to enable use of `Option::or` in const context

This commit is contained in:
Jake Howard 2022-01-01 12:56:44 +00:00
parent 687435c8b2
commit fe8e043b8a
No known key found for this signature in database
GPG Key ID: 57AFB45680EDD477
1 changed files with 2 additions and 9 deletions

View File

@ -1,4 +1,5 @@
#![forbid(unsafe_code)] #![forbid(unsafe_code)]
#![feature(const_option_ext)]
#![cfg_attr(feature = "unstable", feature(ip))] #![cfg_attr(feature = "unstable", feature(ip))]
// The recursion_limit is mainly triggered by the json!() macro. // The recursion_limit is mainly triggered by the json!() macro.
// The more key/value pairs there are the more recursion occurs. // The more key/value pairs there are the more recursion occurs.
@ -76,15 +77,7 @@ const HELP: &str = "\
-v, --version Prints the app version -v, --version Prints the app version
"; ";
// HACK: Option::or cannot be used in a constant context pub const VERSION: Option<&str> = option_env!("BWRS_VERSION").or(option_env!("VW_VERSION"));
const fn get_version() -> Option<&'static str> {
let bwrs_version = option_env!("BWRS_VERSION");
match bwrs_version {
Some(_) => bwrs_version,
None => option_env!("VW_VERSION"),
}
}
pub const VERSION: Option<&str> = get_version();
fn parse_args() { fn parse_args() {
let mut pargs = pico_args::Arguments::from_env(); let mut pargs = pico_args::Arguments::from_env();