From f362327ea0a7e69a0ef8804c8681402e9fb5d3f3 Mon Sep 17 00:00:00 2001 From: Ian Jackson Date: Mon, 16 May 2022 16:03:40 +0100 Subject: [PATCH] W --- src/main.rs | 26 ++++++++++++++++---------- 1 file changed, 16 insertions(+), 10 deletions(-) diff --git a/src/main.rs b/src/main.rs index 44e85eb..7c5ed11 100644 --- a/src/main.rs +++ b/src/main.rs @@ -1,5 +1,7 @@ #![allow(dead_code)] +use std::mem::MaybeUninit; + trait Ish { const N: usize; const F: &'static [&'static str]; @@ -12,13 +14,13 @@ impl Ish for Inner { const F: &'static [&'static str] = &["i"]; } -const fn plus(x: &'static [&'static str], - b: &'static [&'static str]) - -> &'static [&'static str] +const fn plus +(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!() } @@ -26,13 +28,17 @@ const fn plus(x: &'static [&'static str], 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); } -- 2.30.2