>>697
そこはコアースされます
配列とスライスの違いをわかりやすく使用例で示しましょう
まず「配列を受け取り」その各値を2倍にした「配列を返す」関数twice()です
fn twice<const N: usize>(input: &[isize; N]) -> [isize; N] {
let mut output: [isize; N] = [0; N];
for i in 0..N {
output[i] = input[i] * 2;
}
output
}
わかりやすいようforで回して代入しています
fn main() {
let input = [1, 2, 3];
println!("{:?}", twice(&input));
}
もちろんちゃんと動いて[2, 4, 6]となりますね
この関数の引数をスライスを受け取るように型を&[isize]へ変えても大丈夫なのですが
ただし関数を使う時にちょっと状況が変わってきます
そこには様々な違いと問題が生じますので実体験しましょう
これがスライスと配列の違いを理解するためのあなたへの宿題です