Skip to content

Commit d782e87

Browse files
committed
Update from review from michaelwoerister.
1 parent ddd26b4 commit d782e87

File tree

1 file changed

+12
-9
lines changed
  • src/doc/rustc/src/symbol-mangling

1 file changed

+12
-9
lines changed

src/doc/rustc/src/symbol-mangling/v0.md

Lines changed: 12 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -149,7 +149,8 @@ the *[disambiguator]* is used to make the name unique across the crate graph.
149149
> inherent-impl → `M` *[impl-path]* *[type]*
150150
151151
An *inherent-impl* indicates a path to an [inherent implementation][reference-inherent-impl].
152-
It consists of the character `M` followed by an *[impl-path]* to the impl's parent followed by the *[type]* representing the `Self` type of the impl.
152+
It consists of the character `M` followed by an *[impl-path]*, which uniquely identifies the impl block the item is defined in.
153+
Following that is a *[type]* representing the `Self` type of the impl.
153154
154155
> **Recommended Demangling**
155156
>
@@ -167,12 +168,13 @@ It consists of the character `M` followed by an *[impl-path]* to the impl's pare
167168
> The symbol for `foo` in the impl for `Example` is:
168169
>
169170
> ```text
170-
> _RNvMCs15kBYyAo9fc_7mycrateNtB2_7Example3foo
171-
> │└─────────┬──────────┘└────┬──────┘
172-
> │ │ │
173-
> │ │ └── Self type "Example"
174-
> │ └─────────────────── path to the impl's parent "mycrate"
175-
> └────────────────────────────── inherent-impl
171+
> _RNvMs_Cs4Cv8Wi1oAIB_7mycrateNtB4_7Example3foo
172+
> │├┘└─────────┬──────────┘└────┬──────┘
173+
> ││ │ │
174+
> ││ │ └── Self type "Example"
175+
> ││ └─────────────────── path to the impl's parent "mycrate"
176+
> │└─────────────────────────────── disambiguator 1
177+
> └──────────────────────────────── inherent-impl
176178
> ```
177179
>
178180
> Recommended demangling: `<mycrate::Example>::foo`
@@ -307,8 +309,9 @@ It consists of the character `N` followed by a *[namespace]* indicating the name
307309
followed by a *[path]* which is a path representing the parent of the entity,
308310
followed by an *[identifier]* of the entity.
309311
310-
The identifier of the entity may be empty when the entity is not named.
312+
The identifier of the entity may have a length of 0 when the entity is not named.
311313
For example, entities like closures, tuple-like struct constructors, and anonymous constants may not have a name.
314+
The identifier may still have a disambiguator unless the disambiguator is 0.
312315
313316
> **Recommended Demangling**
314317
>
@@ -912,7 +915,7 @@ It consists of a single *[path]*.
912915
This helps differentiate symbols that would otherwise be identical,
913916
for example the monomorphization of a function from an external crate may result in a duplicate if another crate is also instantiating the same generic function with the same types.
914917
915-
In practice, the instantiating crate is also the crate where the symbol is defined,
918+
In practice, the instantiating crate is also often the crate where the symbol is defined,
916919
so it is usually encoded as a *[backref]* to the *[crate-root]* encoded elsewhere in the symbol.
917920
918921
> **Recommended Demangling**

0 commit comments

Comments
 (0)