blob: 0063719b8528cb5325a6d1fcfabcf27839ffb6fd (
plain)
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
29
30
31
32
33
34
35
36
37
38
|
// build-pass
#![allow(incomplete_features)]
#![feature(generic_const_exprs)]
pub trait Foo {
fn foo(&self);
}
pub struct FooImpl<const N: usize>;
impl<const N: usize> Foo for FooImpl<N> {
fn foo(&self) {}
}
pub trait Bar: 'static {
type Foo: Foo;
fn get() -> &'static Self::Foo;
}
struct BarImpl;
impl Bar for BarImpl {
type Foo = FooImpl<
{
{ 4 }
},
>;
fn get() -> &'static Self::Foo {
&FooImpl
}
}
pub fn boom<B: Bar>() {
B::get().foo();
}
fn main() {
boom::<BarImpl>();
}
|