add bench input crate
generate const strings to use as input in benchmarks
This commit is contained in:
parent
a3351d28b7
commit
6ce49e1a71
3 changed files with 65 additions and 0 deletions
7
bench/input/Cargo.toml
Normal file
7
bench/input/Cargo.toml
Normal file
|
@ -0,0 +1,7 @@
|
||||||
|
[package]
|
||||||
|
name = "bench-input"
|
||||||
|
version = "0.1.0"
|
||||||
|
edition = "2021"
|
||||||
|
|
||||||
|
[lib]
|
||||||
|
path = "lib.rs"
|
57
bench/input/build.rs
Normal file
57
bench/input/build.rs
Normal file
|
@ -0,0 +1,57 @@
|
||||||
|
use std::io::Write;
|
||||||
|
|
||||||
|
fn main() {
|
||||||
|
let inputs = std::fs::read_dir("..")
|
||||||
|
.unwrap()
|
||||||
|
.filter_map(|entry| {
|
||||||
|
let entry = entry.ok()?;
|
||||||
|
if let Some(name) = entry.file_name().to_str() {
|
||||||
|
if let Some(name) = name.strip_suffix(".dj") {
|
||||||
|
if entry.file_type().map_or(false, |ty| !ty.is_dir()) {
|
||||||
|
let name_snake = name.replace('-', "_");
|
||||||
|
let input = std::fs::read_to_string(
|
||||||
|
std::path::Path::new("..").join(entry.file_name()),
|
||||||
|
)
|
||||||
|
.ok()?;
|
||||||
|
return Some((name_snake, input));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
None
|
||||||
|
})
|
||||||
|
.collect::<Vec<_>>();
|
||||||
|
|
||||||
|
let out_dir = std::env::var_os("OUT_DIR").unwrap();
|
||||||
|
let mut out = std::fs::File::create(std::path::Path::new(&out_dir).join("lib.rs")).unwrap();
|
||||||
|
|
||||||
|
inputs.iter().for_each(|(name, input)| {
|
||||||
|
write!(
|
||||||
|
out,
|
||||||
|
"#[allow(dead_code)]\nconst {}: &str = r###\"{}\"###;",
|
||||||
|
name.to_uppercase(),
|
||||||
|
input,
|
||||||
|
)
|
||||||
|
.unwrap()
|
||||||
|
});
|
||||||
|
|
||||||
|
write!(
|
||||||
|
out,
|
||||||
|
"#[allow(dead_code)]\npub const ALL: &str = r###\"{}\"###;",
|
||||||
|
inputs.iter().map(|(_, s)| s.as_str()).collect::<String>(),
|
||||||
|
)
|
||||||
|
.unwrap();
|
||||||
|
|
||||||
|
write!(
|
||||||
|
out,
|
||||||
|
"#[allow(dead_code)]\npub const INPUTS: &[(&str, &str)] = &[{}];",
|
||||||
|
inputs
|
||||||
|
.iter()
|
||||||
|
.map(|(n, _)| n.as_ref())
|
||||||
|
.chain(std::iter::once("all"))
|
||||||
|
.map(|n| format!("(\"{}\", {}),", n, n.to_uppercase()))
|
||||||
|
.collect::<String>(),
|
||||||
|
)
|
||||||
|
.unwrap();
|
||||||
|
|
||||||
|
println!("cargo:rerun-if-change=always_rerun");
|
||||||
|
}
|
1
bench/input/lib.rs
Normal file
1
bench/input/lib.rs
Normal file
|
@ -0,0 +1 @@
|
||||||
|
include!(concat!(env!("OUT_DIR"), "/lib.rs"));
|
Loading…
Reference in a new issue