
Rustのコレクションをマスターして、コードをレベルアップ🚀!Vec, HashMap, HashSet, LinkedList…最適な選択肢を見つけよう。
Rustのコレクション:標準ライブラリの強力な味方
Rustは、安全で効率的なプログラミングを可能にする強力な言語です。その強みの一つが、標準ライブラリに豊富に用意されたコレクションです。コレクションは、複数の値をまとめて扱うためのデータ構造であり、プログラムの様々な場面で活躍します。
この記事では、Rustの標準ライブラリにある便利なコレクションをいくつかピックアップし、その使い方や特徴を解説します。それぞれのコレクションがどのような問題を解決し、どのような場面で役立つのかを理解することで、Rustプログラミングの幅が広がります。
Vec:可変長の配列
Vecは、Rustにおける最も基本的なコレクションの一つで、可変長の配列を表現します。要素を順序付けて格納し、必要に応じて要素を追加・削除できます。
let mut vec: Vec<i32> = Vec::new();
vec.push(1);
vec.push(2);
vec.push(3);
println!("{:?}", vec); // Output: [1, 2, 3]Vecは、動的にサイズが変化するデータを扱う場合に非常に便利です。例えば、ファイルからデータを読み込んで配列に格納したり、ユーザーからの入力をリストとして保持したりする際に利用できます。
HashMap:キーと値のペア
HashMapは、キーと値のペアを格納するためのコレクションです。キーを使って値を高速に検索できるため、データの管理や検索に非常に有効です。
use std::collections::HashMap;
let mut map: HashMap<&str, i32> = HashMap::new();
map.insert("apple", 1);
map.insert("banana", 2);
map.insert("orange", 3);
println!("{:?}", map.get("banana")); // Output: Some(2)HashMapは、例えば、設定ファイルの読み込み、データベースからのデータのキャッシュ、単語の出現回数のカウントなど、様々な用途に利用できます。
HashSet:重複なしの要素の集合
HashSetは、重複のない要素の集合を表現します。要素の存在を高速に判定できるため、重複を排除したり、特定の要素が含まれているかを確認したりする際に便利です。
use std::collections::HashSet;
let mut set: HashSet<i32> = HashSet::new();
set.insert(1);
set.insert(2);
set.insert(3);
set.insert(1); // 重複は無視される
println!("{:?}", set); // Output: {1, 2, 3}HashSetは、例えば、訪問済みのURLの記録、ユーザーの権限の管理、タグのリストの作成などに利用できます。
LinkedList:双方向リスト
LinkedListは、各要素が前後の要素へのポインタを持つ双方向リストです。要素の挿入や削除が高速に行えるため、頻繁に要素が追加・削除される場合に有効です。
use std::collections::LinkedList;
let mut list: LinkedList<i32> = LinkedList::new();
list.push_back(1);
list.push_back(2);
list.push_front(0);
for element in list.iter() {
println!("{}", element);
} // Output: 0 1 2LinkedListは、例えば、タスクスケジューラのタスクキュー、履歴の管理、Undo/Redo機能の実装などに利用できます。
参考リンク
まとめ
この記事では、Rustの標準ライブラリにある代表的なコレクションとして、Vec、HashMap、HashSet、LinkedListを紹介しました。これらのコレクションは、それぞれ異なる特徴を持ち、様々な問題を解決するために利用できます。
Rustのコレクションを理解し、適切に使いこなすことで、より効率的で安全なプログラムを作成することができます。ぜひ、様々なコレクションを試して、Rustプログラミングのスキルを向上させてください。

