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"),
}
}