You are an expert in writing code in many different languages. Your goal is to perform code completion for the following code, keeping in mind the rest of the code and the file meta data.
    Metadata details:
    filename: calc_expression.rs
    path of file: ./repos/lewp-rs/lewp-css/src/domain/expressions
    
    the code of the file until where you have to start completion: // This file is part of css. It is subject to the license terms in the COPYRIGHT file found in the top-level directory of this distribution and at https://raw.githubusercontent.com/lemonrock/css/master/COPYRIGHT. No part of predicator, including this file, may be copied, modified, propagated, or distributed except according to the terms contained in the COPYRIGHT file.
// Copyright Â© 2017 The developers of css. See the COPYRIGHT file in the top-level directory of this distribution and at https://raw.githubusercontent.com/lemonrock/css/master/COPYRIGHT.

use {
    super::{CalculablePropertyValue, Expression},
    crate::{
        domain::units::{
            conversions::{
                AttributeConversion,
                CssVariableConversion,
                FontRelativeLengthConversion,
     
    
    fn to_css<W: fmt::Write>(&self, dest: &mut W) -> fmt::Result {
        use self::CalcExpression::*;

        match *self {
            CalculablePropertyValue(ref calculable) => calculable.to_css(dest),

            Number(ref number) => number.to_css(dest),

            Parentheses(ref calcFunctionBody) => {
                dest.write_char('(')?;
                calcFunctionBody.to_css(dest)?;
                dest.write_char(')')
            }

            Addition(ref lhs, ref rhs) => {
                lhs.to_css(dest)?;
                // Whitespace should not be needed if the lhs ends in a ')' or the rhs begins with '(' but the spec does not permit this (https://www.w3.org/TR/css3-values/#calc-notation)
                dest.write_str(" + ")?;
                rhs.to_css(dest)
            }

            Subtraction(ref lhs, ref rhs) => {
                lhs.to_css(dest)?;
                // Whitespace should not be needed if the lhs ends in a ')' or the rhs begins with '(' but the spec does not permit this (https://www.w3.org/TR/css3-values/#calc-notation)
                dest.write_str(" - ")?;
                rhs.to_css(dest)
            }

            Multiplication(ref lhs, ref rhs) => {
                lhs.to_css(dest)?;
                dest.write_char('*')?;
                rhs.to_css(dest)
            }

            Division(ref lhs, ref rhs) => {
                lhs.to_css(dest)?;
                dest.write_char('/')?;
                rhs.to_css(dest)
            }
        }
    }