pub struct Namer {
    unique: FastHashMap<String, u32>,
    keywords: &'static HashSet<&'static str>,
    keywords_case_insensitive: FastHashSet<AsciiUniCase<&'static str>>,
    reserved_prefixes: Vec<&'static str>,
}Expand description
This processor assigns names to all the things in a module that may need identifiers in a textual backend.
Fields§
§unique: FastHashMap<String, u32>The last numeric suffix used for each base name. Zero means “no suffix”.
keywords: &'static HashSet<&'static str>§keywords_case_insensitive: FastHashSet<AsciiUniCase<&'static str>>§reserved_prefixes: Vec<&'static str>Implementations§
Source§impl Namer
 
impl Namer
Sourcefn sanitize<'s>(&self, string: &'s str) -> Cow<'s, str>
 
fn sanitize<'s>(&self, string: &'s str) -> Cow<'s, str>
Return a form of string suitable for use as the base of an identifier.
- Drop leading digits.
 - Retain only alphanumeric and 
_characters. - Avoid prefixes in 
Namer::reserved_prefixes. - Replace consecutive 
_characters with a single_character. 
The return value is a valid identifier prefix in all of Naga’s output languages,
and it never ends with a SEPARATOR character.
It is used as a key into the unique table.
Sourcepub fn call(&mut self, label_raw: &str) -> String
 
pub fn call(&mut self, label_raw: &str) -> String
Return a new identifier based on label_raw.
The result:
- is a valid identifier even if 
label_rawis not - conflicts with no keywords listed in 
Namer::keywords, and - is different from any identifier previously constructed by this
Namer. 
Guarantee uniqueness by applying a numeric suffix when necessary. If label_raw
itself ends with digits, separate them from the suffix with an underscore.
pub fn call_or(&mut self, label: &Option<String>, fallback: &str) -> String
Sourcefn namespace(&mut self, capacity: usize, body: impl FnOnce(&mut Self))
 
fn namespace(&mut self, capacity: usize, body: impl FnOnce(&mut Self))
Enter a local namespace for things like structs.
Struct member names only need to be unique amongst themselves, not
globally. This function temporarily establishes a fresh, empty naming
context for the duration of the call to body.