in netbench-collector/src/bpftrace.rs [260:295]
fn parse_hist_bound(s: &str) -> Option<u64> {
// try parsing without any suffix
if let Ok(v) = s.parse() {
return Some(v);
}
let number_index = s
.char_indices()
.find_map(|(idx, c)| {
if !(c.is_numeric() || c == '.') {
Some(idx)
} else {
None
}
})
.unwrap_or(s.len());
let mut v: f64 = s[..number_index].parse().ok()?;
let suffix = s[number_index..].trim();
v *= *match suffix {
"" => 1.bytes(),
"K" | "k" => 1.kilobytes(),
"Ki" | "ki" => 1.kibibytes(),
"M" | "m" => 1.megabytes(),
"Mi" | "mi" => 1.mebibytes(),
"G" | "g" => 1.gigabytes(),
"Gi" | "gi" => 1.gibibytes(),
"T" | "t" => 1.terabytes(),
"Ti" | "ti" => 1.tebibytes(),
_ => return None,
} as f64;
Some(v as u64)
}