next-web-common 0.1.0

A common utility library for the Next Web framework
Documentation


#[derive(Debug, Clone)]
pub struct Number {
    value: u32,
}

impl From<u32> for Number {
    
    fn from(value: u32) -> Self {
        Number { value }
    }
}

impl From<f32> for Number {
    
    fn from(value: f32) -> Self {
        let value = (value * 100.0) as u32;
        Number { value }
    }
}

impl From<f64> for Number {
    
    fn from(value: f64) -> Self {
        let value = (value * 100.0) as u32;
        Number { value }
    }
}

impl From<String> for Number {

    fn from(value: String) -> Self {
        let value = if value.contains(".") {
            value.parse::<f64>().unwrap_or_default() as u32
        }
        else {
            value.parse::<u32>().unwrap_or_default()
        };
        Number { value }
    }
}

impl From<&str> for Number {

    fn from(value: &str) -> Self {
        let value = if value.contains(".") {
            (value.parse::<f64>().unwrap_or_default() * 100.0) as u32
        }
        else {
            value.parse::<u32>().unwrap_or_default()
        };
        Number { value }
    }
}


#[cfg(test)]
mod tests {
    use super::*;

    #[test]
    fn test_from_u32() {
        let big_decimal = Number::from("132.15");
        assert_eq!(big_decimal.value, 13215);
    }
}