b1d08275a9
An odd feature of Rust is that `Foo` is invalid, but `Bar` is okay: type Foo<'a, 'b> = Box<dyn PartialEq<Foo<'a, 'b>>>; type Bar<'a, 'b> = impl PartialEq<Bar<'a, 'b>>; To get it right, track every time rustdoc descends into a type alias, so if it shows up twice, it can be write the path instead of infinitely expanding it.
26 lines
958 B
Plaintext
26 lines
958 B
Plaintext
error[E0391]: cycle detected when expanding type alias `Bar`
|
|
--> $DIR/issue-110629-private-type-cycle-dyn.rs:1:38
|
|
|
|
|
LL | type Bar<'a, 'b> = Box<dyn PartialEq<Bar<'a, 'b>>>;
|
|
| ^^^^^^^^^^^
|
|
|
|
|
= note: ...which immediately requires expanding type alias `Bar` again
|
|
= note: type aliases cannot be recursive
|
|
= help: consider using a struct, enum, or union instead to break the cycle
|
|
= help: see <https://doc.rust-lang.org/reference/types.html#recursive-types> for more information
|
|
note: cycle used when collecting item types in top-level module
|
|
--> $DIR/issue-110629-private-type-cycle-dyn.rs:1:1
|
|
|
|
|
LL | / type Bar<'a, 'b> = Box<dyn PartialEq<Bar<'a, 'b>>>;
|
|
LL | |
|
|
LL | |
|
|
LL | | fn bar<'a, 'b>(i: &'a i32) -> Bar<'a, 'b> {
|
|
... |
|
|
LL | | assert!(bar(&meh) == bar(&muh));
|
|
LL | | }
|
|
| |_^
|
|
|
|
error: aborting due to previous error
|
|
|
|
For more information about this error, try `rustc --explain E0391`.
|