13章ユーティリティトレイト

科学とは、自然の多様性の中に、より正確に言えばわれわれの経験の多様性の中に、統一性を発見しようという探索に他ならない。詩や絵画なども同じことを探索してる。コールリッジの言葉によれば、多様性の中の統一性を。

−Jacob Bronowski†1

[†1] 訳注:Samuel Taylor Coleridge(1772−1834)はイギリスの詩人。Jacob Bronowski(1908−1974)はイギリスの数学者、科学史家。

本章では、Rustの「ユーティリティ」トレイトとわれわれが呼んでいる雑多なトレイトを紹介していく。これらのトレイトは標準ライブラリでも用いられていて、Rustそのものへも影響を与えている。これらを知っておかないと、慣用的に用いられる書き方でコードを書いたり、「Rustらしい」クレートの公開インターフェイスを設計することができない。本章で紹介するクレートは、大別して3つのカテゴリに分けられる。

言語拡張トレイト
前節で紹介した、演算子オーバロードトレイトは、Rustの式で用いる演算子をユーザが定義した型に対しても適用できるようにするものだった。これと同じように、ユーザが定義した型をより密接に言語と統合するための、拡張点の役割を果たす標準ライブラリトレイトがいくつかある。DropDerefDerefMut、変換トレイトのFromIntoがこれに相当する。本章でこれらを紹介する。
マーカトレイト
マーカトレイトは、ジェネリックな型変数を制約して、他の方法では表現できない制約を表現するために用いられる。SizedCopyはマーカトレイトだ。
共有語彙としてのトレイト
これらのトレイトはコンパイラのサポートを受けておらず、まったく同じ機能を持つものを独自に定義することもできる。しかし、これらのトレイトは一般的な問題に対する慣用的な解決法を定義するという、重要な目的のために用いられている。これらのトレイトは、クレートやモジュールの公開インターフェイスで特に役に立つ。不必要な多様性を減らし、インターフェイスを理解しやすくしてくれる。さらに、複数のクレートの機能を、余分なボイラープレートコードやグルーコードなしに、直接つなぎ合わせることができる可能性を向上させるのにも役立つ。 ...

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.