#[derive(Debug, Clone, Ord, PartialOrd, Eq, PartialEq, Hash)]
pub struct CalcFunction<U: Unit>(pub Rc<CalcExpression<U>>);
impl<U: Unit> Default for CalcFunction<U>
{
#[inline(always)]
fn default() -> Self
{
CalcFunction(Rc::new(CalcExpression::default()))
}
}
impl<U: Unit> ToCss for CalcFunction<U>
{
fn to_css<W: fmt::Write>(&self, dest: &mut W) -> fmt::Result
{
dest.write_str("calc(")?;
self.0.to_css(dest)?;
dest.write_char(')')
}
}
impl<U: Unit> Expression<U> for CalcFunction<U>
{
#[inline(always)]
fn evaluate<Conversion: FontRelativeLengthConversion<U::Number> + ViewportPercentageLengthConversion<U::Number> + PercentageConversion<U::Number> + AttributeConversion<U> + CssVariableConversion>(&self, conversion: &Conversion) -> Option<U::Number>
{
self.0.evaluate(conversion)
}
}