use criterion::{criterion_group, criterion_main, BenchmarkId, Criterion}; use static_web_server::static_files; #[derive(Debug)] struct Inputs<'a> { base_path: &'a std::path::Path, uri_path: &'a str, } impl std::fmt::Display for Inputs<'_> { fn fmt(&self, fmt: &mut std::fmt::Formatter<'_>) -> Result<(), std::fmt::Error> { write!(fmt, "{:?}", self) } } fn sanitize_path_benchmark(c: &mut Criterion) { let base_path = std::path::Path::new("root/../"); let uri_path: &str = "../assets/../../.../image.jpg"; let inputs = Inputs { base_path, uri_path, }; c.bench_with_input(BenchmarkId::new("path_inputs", &inputs), &inputs, |b, s| { b.iter(|| static_files::sanitize_path(s.base_path, s.uri_path)) }); } criterion_group!(static_files_bench, sanitize_path_benchmark); criterion_main!(static_files_bench);