oxc-browserslist 3.0.2

Rust-ported Browserslist for Oxc.
Documentation
use super::{Distrib, QueryResult};
use crate::{data::caniuse::region::get_usage_by_region, error::Error};

pub(super) fn cover_by_region(coverage: f32, region: &str) -> QueryResult {
    let normalized_region =
        if region.len() == 2 { region.to_uppercase() } else { region.to_lowercase() };

    if let Some(region_data) = get_usage_by_region(&normalized_region) {
        let mut distribs = vec![];
        let mut total = 0.0;
        for (name, version, usage) in region_data.iter() {
            if total >= coverage || usage == 0.0 {
                break;
            }
            distribs.push(Distrib::new(name, version));
            total += usage;
        }
        Ok(distribs)
    } else {
        Err(Error::UnknownRegion(region.to_string()))
    }
}