mf2 2.0.0

Unicode MessageFormat 2 for Rust, for Leptos web applications and native CLI and terminal applications: the one crate an application names — the call-site types, the Leptos layer, the native application support and its Ratatui text behind features, the formatter, and compile_str for ad-hoc messages.
Documentation
//! Carries this crate's features to the build script of the crate that
//! includes the generated module (plans/19-native-and-terminal.md §11).
//!
//! `links = "mf2-v2"` makes cargo hand each `cargo::metadata=KEY=VALUE` below
//! to the build script of every crate that names `mf2` as a dependency, as
//! `DEP_MF2_V2_KEY`. `mf2_build::run()` reads them to decide what to emit, so
//! that no translation crate declares or forwards a feature of its own.

fn main() {
    // Sorted, comma-separated, `default` left out: cargo spells `leptos-0-8`
    // as `CARGO_FEATURE_LEPTOS_0_8`, and no feature of this crate has a `_`.
    let mut features: Vec<String> = std::env::vars_os()
        .filter_map(|(key, _)| {
            key.to_str()?
                .strip_prefix("CARGO_FEATURE_")
                .map(|f| f.to_ascii_lowercase().replace('_', "-"))
        })
        .filter(|f| f != "default")
        .collect();
    features.sort();
    println!("cargo::metadata=features={}", features.join(","));
    println!(
        "cargo::metadata=target={}",
        std::env::var("TARGET").unwrap_or_default()
    );
    println!("cargo::metadata=version={}", env!("CARGO_PKG_VERSION"));
    // The features are the unit's own: a change makes another unit, which
    // runs this again. Nothing else here can change the output.
    println!("cargo::rerun-if-changed=build.rs");
}