Skip to main content

oxilean_codegen/opt_ctfe/
ctfevalue_traits.rs

1//! # CtfeValue - Trait Implementations
2//!
3//! This module contains trait implementations for `CtfeValue`.
4//!
5//! ## Implemented Traits
6//!
7//! - `Display`
8//!
9//! 🤖 Generated with [SplitRS](https://github.com/cool-japan/splitrs)
10
11use super::types::CtfeValue;
12use std::fmt;
13
14impl fmt::Display for CtfeValue {
15    fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
16        match self {
17            CtfeValue::Int(n) => write!(f, "{}", n),
18            CtfeValue::Float(x) => write!(f, "{}", x),
19            CtfeValue::Bool(b) => write!(f, "{}", b),
20            CtfeValue::String(s) => write!(f, "\"{}\"", s),
21            CtfeValue::List(xs) => {
22                write!(f, "[")?;
23                for (i, v) in xs.iter().enumerate() {
24                    if i > 0 {
25                        write!(f, ", ")?;
26                    }
27                    write!(f, "{}", v)?;
28                }
29                write!(f, "]")
30            }
31            CtfeValue::Tuple(xs) => {
32                write!(f, "(")?;
33                for (i, v) in xs.iter().enumerate() {
34                    if i > 0 {
35                        write!(f, ", ")?;
36                    }
37                    write!(f, "{}", v)?;
38                }
39                write!(f, ")")
40            }
41            CtfeValue::Constructor(name, fields) => {
42                write!(f, "{}", name)?;
43                if !fields.is_empty() {
44                    write!(f, "(")?;
45                    for (i, v) in fields.iter().enumerate() {
46                        if i > 0 {
47                            write!(f, ", ")?;
48                        }
49                        write!(f, "{}", v)?;
50                    }
51                    write!(f, ")")?;
52                }
53                Ok(())
54            }
55            CtfeValue::Undef => write!(f, "undef"),
56        }
57    }
58}