1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28
|
#![feature(type_alias_impl_trait)]
//@ check-pass
type Foo = impl std::iter::FromIterator<i32> + PartialEq<Vec<i32>> + std::fmt::Debug;
fn foo(b: bool) -> Foo {
if b {
vec![42_i32]
} else {
std::iter::empty().collect()
}
}
fn bar(b: bool) -> impl PartialEq<Vec<i32>> + std::fmt::Debug {
if b {
vec![42_i32]
} else {
std::iter::empty().collect()
}
}
fn main() {
assert_eq!(foo(true), vec![42]);
assert_eq!(foo(false), vec![]);
assert_eq!(bar(true), vec![42]);
assert_eq!(bar(false), vec![]);
}
|