На основе по коду , к ключевым словам добавлено подчеркивание:
// List of keywords based on https://doc.rust-lang.org/grammar.html#keywords
let reserved = &[
"abstract", "alignof", "as", "become", "box", "break", "const", "continue", "crate", "do",
"else", "enum", "extern", "false", "final", "fn", "for", "if", "impl", "in", "let", "loop",
"macro", "match", "mod", "move", "mut", "offsetof", "override", "priv", "proc", "pub",
"pure", "ref", "return", "Self", "self", "sizeof", "static", "struct", "super", "trait",
"true", "type", "typeof", "unsafe", "unsized", "use", "virtual", "where", "while", "yield",
];
if reserved.contains(&field_name) {
let name_ident = Ident::new(&format!("{}_", field_name), Span::call_site());
return quote! {
#description
#deprecation
#[serde(rename = #field_name)]
pub #name_ident: #field_type
};
}
Это означает, что type
должно быть доступно как type_
.
Смотри также: