Почему это работает,
let a = Box::new([2; 10]);
println!( "foo {:?}", a );
Но это не так,
let a = Box::new([2; 100]);
println!( "foo {:?}", a );
Почему длина массива определяет реализации свойств? Ошибка кажется не связанной с вопросом. И наоборот, как можно добиться желаемого эффекта с помощью приведенного выше кода.
Воспроизводится ошибка:
error[E0277]: arrays only have std trait implementations for lengths 0..=32
--> ./test.rs:4:27
|
4 | println!( "foo {:?}", a );
| ^ the trait `std::array::LengthAtMost32` is not implemented for `[{integer}; 100]`
|
= note: required because of the requirements on the impl of `std::fmt::Debug` for `[{integer}; 100]`
= note: required because of the requirements on the impl of `std::fmt::Debug` for `std::boxed::Box<[{integer}; 100]>`
= note: required by `std::fmt::Debug::fmt`
error: aborting due to previous error
For more information about this error, try `rustc --explain E0277`.