1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
static RUST_KEYWORDS: [&'static str; 76] = [
"abstract",
"alignof",
"as",
"become",
"bool",
"box",
"Box",
"break",
"BytesReader",
"const",
"continue",
"crate",
"Cow",
"Default",
"do",
"else",
"enum",
"Err",
"extern",
"f32",
"f64",
"false",
"final",
"fn",
"for",
"HashMap",
"i32",
"i64",
"if",
"impl",
"in",
"let",
"loop",
"match",
"mod",
"move",
"mut",
"None",
"MessageWrite",
"offsetof",
"Ok",
"Option",
"override",
"priv",
"proc",
"pub",
"pure",
"ref",
"Result",
"return",
"self",
"Self",
"sizeof",
"Some",
"static",
"str",
"String",
"struct",
"super",
"trait",
"true",
"type",
"typeof",
"u8",
"u32",
"u64",
"unsafe",
"unsized",
"use",
"Vec",
"virtual",
"where",
"while",
"Write",
"Writer",
"yield",
];
pub fn sanitize_keyword(ident: &mut String) {
if !ident.contains('.') && RUST_KEYWORDS.contains(&&**ident) {
ident.push_str("_pb");
} else {
*ident = ident
.split('.')
.map(|s| {
if RUST_KEYWORDS.contains(&s) {
format!("{}_pb", s)
} else {
s.to_string()
}
})
.collect::<Vec<_>>()
.join(".");
}
}