fn parse_num()

in aws_secretsmanager_agent/src/config.rs [369:394]


fn parse_num<T>(
    str_val: &str,
    msg: &str,
    pos_range: Option<Range<T>>,
    neg_range: Option<Range<T>>,
) -> Result<T, Box<dyn std::error::Error>>
where
    T: PartialOrd + Sized + std::str::FromStr,
{
    let val = match str_val.parse::<T>() {
        Ok(x) => x,
        _ => Err(msg)?,
    };
    if let Some(rng) = pos_range {
        if !rng.contains(&val) {
            Err(msg)?;
        }
    }
    if let Some(rng) = neg_range {
        if rng.contains(&val) {
            Err(msg)?;
        }
    }

    Ok(val)
}