fn main() {
let arr: [u8;8] = [97, 112, 112, 108, 101];
println!("Len is {}",arr.len());
println!("Elements are {:?}",arr);
}
Run Code Online (Sandbox Code Playgroud)
fn main() {
let arr: [u8;8] = [97, 112, 112, 108, 101];
println!("Len is {}",arr.len());
println!("Elements are {:?}",arr);
}
Run Code Online (Sandbox Code Playgroud)
有什么办法可以用0来填充剩余的元素吗?就像是:
let arr: [u8;8] = [97, 112, 112, 108, 101].something();
Run Code Online (Sandbox Code Playgroud)
Max*_*nko 10
您可以使用concat_arrays宏来实现:
use concat_arrays::concat_arrays;
fn main() {
let arr: [u8; 8] = concat_arrays!([97, 112, 112, 108, 101], [0; 3]);
println!("{:?}", arr);
}
Run Code Online (Sandbox Code Playgroud)
我认为没有外部依赖是不可能的。
Aid*_*en4 10
除了其他答案之外,您还可以使用 const 泛型来编写专用方法。
fn pad_zeroes<const A: usize, const B: usize>(arr: [u8; A]) -> [u8; B] {
assert!(B >= A); //just for a nicer error message, adding #[track_caller] to the function may also be desirable
let mut b = [0; B];
b[..A].copy_from_slice(&arr);
b
}
Run Code Online (Sandbox Code Playgroud)
您可以从零开始,然后设置初始值。但这是必须arr的mut。
fn main() {
let mut arr: [u8;8] = [0;8];
let init = [97, 112, 112, 108, 101];
arr[..init.len()].copy_from_slice(&init);
println!("Len is {}",arr.len());
println!("Elements are {:?}",arr);
}
Run Code Online (Sandbox Code Playgroud)
链接到游乐场