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.