mirror of
https://github.com/rust-lang/rust
synced 2024-09-15 22:50:55 +00:00
30 lines
408 B
Rust
30 lines
408 B
Rust
|
//@ build-pass
|
||
|
|
||
|
trait AssociatedConstant {
|
||
|
const DATA: ();
|
||
|
}
|
||
|
|
||
|
impl<F, T> AssociatedConstant for F
|
||
|
where
|
||
|
F: FnOnce() -> T,
|
||
|
T: AssociatedConstant,
|
||
|
{
|
||
|
const DATA: () = T::DATA;
|
||
|
}
|
||
|
|
||
|
impl AssociatedConstant for () {
|
||
|
const DATA: () = ();
|
||
|
}
|
||
|
|
||
|
fn foo() -> impl AssociatedConstant {
|
||
|
()
|
||
|
}
|
||
|
|
||
|
fn get_data<T: AssociatedConstant>(_: T) -> &'static () {
|
||
|
&T::DATA
|
||
|
}
|
||
|
|
||
|
fn main() {
|
||
|
get_data(foo);
|
||
|
}
|