//@ check-pass //@ compile-flags: -Znext-solver // Test that we can call methods from const trait impls inside of generic const items. #![feature(generic_const_items, const_trait_impl, effects)] #![allow(incomplete_features)] #![crate_type = "lib"] const CREATE: T = T::create(); pub const K0: i32 = CREATE::; pub const K1: i32 = CREATE; // arg inferred #[const_trait] trait Create { fn create() -> Self; } impl const Create for i32 { fn create() -> i32 { 4096 } } trait Mod { // doesn't need to be a `#[const_trait]` const CREATE: T; } impl Mod for () { const CREATE: T = T::create(); } pub const K2: i32 = <() as Mod>::CREATE::;