9章構造体
昔、羊飼いが2つの羊の群れが同型であるかを知るには、明示的な同型写像を探すしかなかった。
−John C. Baez、James Dolan「Categorification」†1
Rustの構造体(struct)は、CとC++のstruct
型や、Pythonのクラス、JavaScriptのオブジェクトに似ている。構造体は、さまざまな型の複数の値を1つの単位として扱えるように、1つの値に組み込んだものだ。ある構造体に対して、個々の構成要素を読み出したり変更したりすることができる。また、構成要素に対する操作を行うメソッドを関連付けることもできる。
Rustには3種類の構造体がある。名前付きフィールド型、タプル型、ユニット型の3つだ。これらは個々の構成要素にアクセスする方法が異なる。名前付きフィールド型構造体は、個々の構成要素に名前を与えるが、タプル型構造体では順番で構成要素を指定する。ユニット型構造体には構成要素がまったくない。これはあまり使われることはないが、意外に有用だ。
本章では、それぞれの種類を詳細に説明し、メモリ上での表現を示す。メソッドを追加する方法、ジェネリック構造体型の定義方法、さまざまな構成要素型の取り扱い、一般的で便利なトレイトの実装をRustに生成させる方法についても説明する。
9.1 名前付きフィールド型構造体
名前付きフィールド型構造体の定義は次のように行う。
8ビットグレースケールピクセルの長方形 /// A rectangle of eight-bit grayscale pixels. struct GrayscaleMap { pixels: Vec<u8>, ...
Get プログラミングRust 第2版 now with the O’Reilly learning platform.
O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.