@@ -447,8 +447,8 @@ the `impl` to the symbol name.
447
447
448
448
```
449
449
<path> = C <identifier> // crate-id root
450
- | M <impl-path> <type> // inherent impl root
451
- | X <impl-path> <type> <path> // trait impl root
450
+ | M <impl-path> <type> // inherent impl root
451
+ | X <impl-path> <type> <path> // trait impl root
452
452
| N <namespace> <path> <identifier> // nested path
453
453
| I <path> {<generic-arg>} E // generic arguments
454
454
@@ -560,7 +560,8 @@ occurrence of which could be replaced by a back reference.
560
560
561
561
The things that are eligible for substitution are (1) all prefixes of
562
562
paths (including the entire path itself), (2) all types except for
563
- basic types, and (3) instances of const data.
563
+ basic types, and (3) type-level constants (array lengths and values
564
+ passed to const generic params).
564
565
565
566
Here's an example in order to illustrate the concept. The name
566
567
@@ -574,20 +575,20 @@ by a back reference. The number of at the beginning of each span given
574
575
the 0-based byte position of where it occurred the first time.
575
576
576
577
```
577
- 0 10 20 30 40 50 60 70 80 90
578
+ 0 10 20 30 40 50 60 70 80 90
578
579
_RINtNtC3std4iter5ChainINtNtC3std4iter3ZipINtNtC3std3vec8IntoItermEINtNtC3std3vec8IntoItermEEE
579
- 7 ---- 7 ---- 7 ----
580
- 5 ----------- 45 ---------
581
- 43 --------------------
582
- 42 -----------------------
580
+ 5 ---- 5 ---- 5 ----
581
+ 3 ----------- 43 ---------
582
+ 41 --------------------
583
+ 40 -----------------------
583
584
```
584
585
585
586
The compiler is always supposed to use the longest replacement possible
586
587
in order to achieve the best compression. The compressed symbol looks
587
588
as follows:
588
589
589
590
```
590
- _RINtNtC3std4iter5ChainINtB4_3ZipINtNtB6_3vec8IntoItermEBv_EE
591
+ _RINtNtC3std4iter5ChainINtB2_3ZipINtNtB4_3vec8IntoItermEBt_EE
591
592
^^^ ^^^ ^^^ back references
592
593
```
593
594
0 commit comments