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