fn parse_hist_bound()

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)
}