// build-pass trait AssociatedConstant { const DATA: (); } impl 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) -> &'static () { &T::DATA } fn main() { get_data(foo); }