fn quote_type()

in serde-generate/src/cpp.rs [186:239]


    fn quote_type(&self, format: &Format, require_known_size: bool) -> String {
        use Format::*;
        match format {
            TypeName(x) => {
                let qname = self.quote_qualified_name(x);
                if require_known_size && !self.known_sizes.contains(x.as_str()) {
                    // Cannot use unique_ptr because we need a copy constructor (e.g. for vectors)
                    // and in-depth equality.
                    format!("serde::value_ptr<{}>", qname)
                } else {
                    qname
                }
            }
            Unit => "std::monostate".into(),
            Bool => "bool".into(),
            I8 => "int8_t".into(),
            I16 => "int16_t".into(),
            I32 => "int32_t".into(),
            I64 => "int64_t".into(),
            I128 => "serde::int128_t".into(),
            U8 => "uint8_t".into(),
            U16 => "uint16_t".into(),
            U32 => "uint32_t".into(),
            U64 => "uint64_t".into(),
            U128 => "serde::uint128_t".into(),
            F32 => "float".into(),
            F64 => "double".into(),
            Char => "char32_t".into(),
            Str => "std::string".into(),
            Bytes => "std::vector<uint8_t>".into(),

            Option(format) => format!(
                "std::optional<{}>",
                self.quote_type(format, require_known_size)
            ),
            Seq(format) => format!("std::vector<{}>", self.quote_type(format, false)),
            Map { key, value } => format!(
                "std::map<{}, {}>",
                self.quote_type(key, false),
                self.quote_type(value, false)
            ),
            Tuple(formats) => format!(
                "std::tuple<{}>",
                self.quote_types(formats, require_known_size)
            ),
            TupleArray { content, size } => format!(
                "std::array<{}, {}>",
                self.quote_type(content, require_known_size),
                *size
            ),

            Variable(_) => panic!("unexpected value"),
        }
    }