#![allow(dead_code)]
trait Ish {
+ const N: usize;
const F: &'static [&'static str];
}
struct Inner { i: usize, }
impl Ish for Inner {
+ const N: usize = 1;
const F: &'static [&'static str] = &["i"];
}
+const fn plus<AN: usize, BN: usize>(x: &'static [&'static str],
+ b: &'static [&'static str])
+ -> &'static [&'static str]
+{
+ unsafe {
+ static mut A: [MaybeUninit<&'static str>; _] = [MaybeUninit::new_uninit(); an + bn];
+ }
+ panic!()
+}
+
+struct Outer { o: usize, }
+impl Ish for Outer {
+ const F: &'static [&'static str] = plus(
+ Inner::N, Inner::F,
+ 1, &["o"]
+ );
+}
+
fn main(){
eprintln!("IF {:?}", Inner::F);
+ eprintln!("OF {:?}", Outer::F);
}