use std::env; use std::error::Error; use std::fs; use std::path::PathBuf; fn main() -> Result<(), Box> { let out_dir = PathBuf::from(env::var("OUT_DIR")?); fs::write(out_dir.join("features.txt"), get_feature_string())?; Ok(()) } /// Generate a "feature string" for the crate features currently enabled. fn get_feature_string() -> String { env::vars() .filter(|(name, _)| name.starts_with("CARGO_FEATURE_")) .filter(|(_, value)| value == "1") .map(|(name, _)| name.trim_start_matches("CARGO_FEATURE_").to_lowercase()) .collect::>() .join(",") }