css-style 0.14.1

Typed CSS Style
Documentation
use crate::Unit;

pub trait Spacing: Default {
    type Unit: Unit + Clone;
    fn left(self, value: impl Into<Self::Unit>) -> Self;
    fn right(self, value: impl Into<Self::Unit>) -> Self;
    fn top(self, value: impl Into<Self::Unit>) -> Self;
    fn bottom(self, value: impl Into<Self::Unit>) -> Self;

    fn x(self, value: impl Into<Self::Unit>) -> Self {
        let value = value.into();
        self.left(value.clone()).right(value)
    }

    fn y(self, value: impl Into<Self::Unit>) -> Self {
        let value = value.into();
        self.top(value.clone()).bottom(value)
    }

    fn horizontal(self, value: impl Into<Self::Unit>) -> Self {
        self.y(value)
    }

    fn vertical(self, value: impl Into<Self::Unit>) -> Self {
        self.x(value)
    }

    fn all(self, value: impl Into<Self::Unit>) -> Self {
        let value = value.into();
        self.x(value.clone()).y(value)
    }

    fn zero(self) -> Self {
        Self::default().all(Self::Unit::zero())
    }

    fn half(self) -> Self {
        Self::default().all(Self::Unit::half())
    }

    fn full(self) -> Self {
        Self::default().all(Self::Unit::full())
    }
}