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.
16 lines
259 B
Rust
16 lines
259 B
Rust
// check-pass
|
|
|
|
#![feature(type_alias_impl_trait)]
|
|
|
|
type Bar<'a, 'b> = impl PartialEq<Bar<'a, 'b>> + std::fmt::Debug;
|
|
|
|
fn bar<'a, 'b>(i: &'a i32) -> Bar<'a, 'b> {
|
|
i
|
|
}
|
|
|
|
fn main() {
|
|
let meh = 42;
|
|
let muh = 42;
|
|
assert_eq!(bar(&meh), bar(&muh));
|
|
}
|