LoginSignup
2
0

【Rust】String型で配列を初期化しようとした時に「the `Copy` trait is require」が発生

Posted at

概要

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];
2
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0