概要
Rustで配列の初期化を行う時、Rustの配列(array)の使い方の記事内容を参考に実装してみました。今回はString型の配列にしたかったので、以下のように実装したのですがthe
Copy trait is require
と言われてしまい、この実装だとダメでした。
let mut sample_array = ["".to_string(); 10];
少し対応など調べてみましたので、今回メモ書きします。
前提
使用したrustcのバージョンは1.76.0
です。
対応案
いくつか対応案が考えられると思いますが、取り急ぎ2つ挙げておきます。
1. そもそもVecを使うようにする
特段、配列にこだわりがなければVecを使うという方法が挙げられます。Rustで配列を『安全に』初期化する方法の記事で紹介されている通り、以下のようにマクロを使う方法などで初期化が行えます。
let mut sample_vec = vec!["".to_string(); 10];
2. 初期化の値をconstで宣言する
配列を使用したいケースの場合は、Initializing an array of strings in Rustのstackoverflowの回答で紹介されている通り、初期化する値をString::new()
でconstで宣言するという対応が挙げられます。
const EMPTY_STRING: String = String::new();
let mut sample_array = [EMPTY_STRING; 10];