use std::{fs, path::Path};
const HEAD: &str = "src/methods/00_head.rs";
const FAMILIES: [&str; 9] = [
"grouping",
"combining",
"distinct",
"fallback",
"sorting",
"statistics",
"strings",
"cardinality",
"folds",
];
fn main() {
println!("cargo:rerun-if-changed={HEAD}");
let mut trait_src =
String::from("// @generated by build.rs from src/methods/* — do not edit.\n");
trait_src.push_str(&fs::read_to_string(HEAD).expect("missing src/methods/00_head.rs"));
for family in FAMILIES {
let path = format!("src/methods/{family}.rs");
println!("cargo:rerun-if-changed={path}");
trait_src.push('\n');
trait_src.push_str(&fs::read_to_string(&path).expect("missing fragment"));
}
trait_src.push_str("\n}\n");
let target = Path::new(env!("CARGO_MANIFEST_DIR")).join("src/fluent_iter.rs");
if fs::read_to_string(&target)
.map(|old| old != trait_src)
.unwrap_or(true)
{
fs::write(&target, trait_src).expect("cannot write src/fluent_iter.rs");
}
}