@@ -150,6 +150,15 @@ the *[disambiguator]* is used to make the name unique across the crate graph.
150
150
> ```
151
151
>
152
152
> Recommended demangling : `mycrate :: example `
153
+ >
154
+ > Note : The compiler may re - use the * crate - root* form to express arbitrary
155
+ > unscoped, undisambiguated identifiers, such as for new basic types that have
156
+ > not been added to the grammar yet. To achieve that, it will emit a * crate - root*
157
+ > without an explicit disambiguator, relying on the fact that such an
158
+ > undisambiguated crate name cannot occur in practice. For example, the basic
159
+ > type `f128` would be encode as `C4f128 `. For this to have the desired effect,
160
+ > demanglers are expected to never render zero disambiguators of crate roots.
161
+ > I . e. `C4f128 ` is expected to be displayed as `f128` and not `f128[0]`.
153
162
154
163
### Path : Inherent impl
155
164
[inherent- impl ]: #path- inherent- impl
@@ -539,6 +548,10 @@ This allows disambiguators that are encoded sequentially to use minimal bytes.
539
548
> * * Recommended Demangling **
540
549
>
541
550
> The * disambiguator* may or may not be displayed; see recommendations for rules that use * disambiguator* .
551
+ > Generally , it is recommended that zero disambiguators are never displayed unless their accompanying
552
+ > identifier is empty (like is the case for unnamed items such as closures).
553
+ > When rendering a disambiguator, it can be shortened to a length reasonable for the context,
554
+ > similar to how git commit hashes are rarely displayed in full.
542
555
543
556
## Lifetime
544
557
[lifetime]: #lifetime
0 commit comments