polished_css/data_type/
number.rs

1/// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/CSS/number)
2/// [CSSWG specification](https://drafts.csswg.org/css-values/#number)
3#[derive(Clone, Debug, PartialEq, polished_css_macros::Deref, polished_css_macros::Display)]
4pub struct Number(pub f64);
5
6impl Number {
7    #[must_use]
8    pub fn zero() -> Self {
9        Self(0.0)
10    }
11}
12
13pub trait NumberStorage: From<Number> {
14    #[must_use]
15    fn number(value: f64) -> Self
16    where
17        Self: Sized,
18    {
19        Self::from(Number(value))
20    }
21
22    #[must_use]
23    fn zero() -> Self
24    where
25        Self: Sized,
26    {
27        Self::from(Number(0.0))
28    }
29}
30
31#[cfg(test)]
32mod test {
33    #[test]
34    fn display() {
35        assert_eq!(super::Number(13.37).to_string(), String::from("13.37"));
36        assert_eq!(super::Number(-100.0).to_string(), String::from("-100"));
37        assert_eq!(super::Number::zero().to_string(), String::from("0"));
38    }
39}