0

ベクトルを初期化する方法は知っているが、それらの要素の正確な順序がわからない状況があります。

let mut vector = todo!();
for (index, element) in &hash_map {
    vector[index] = element;
}

問題は、ベクトルを初期化する方法です。それが保持する要素はあまり軽量ではないので、初期化されていないベクトルを作成して少しごまかすことをお勧めします。

let mut vector = Vec::with_capacity(size);
unsafe { vector.set_len(size) };

問題は、後で値を割り当てるときに、前の要素 (初期化されていないガベージ) を削除してパニックになることです。

vector[index] = element;

デフォルトのドロップ動作をトリガーせずに要素をベクターに割り当てるにはどうすればよいですか?

4

1 に答える 1