🍣

[Rust] prelude ってなに?

2021/11/27に公開

Rust開発で躓いた prelude (プレリュード)

以前RustでHTTPをリッスンするサーバを構築したときのコードで prelude (プレリュードと読むらしい)を使っていたのですが、いまいち使い方を理解していなかったので、簡単に調べてみました。
※以前の記事

preludeとは

preludeについて公式を読んでみて必要になる背景や特徴を箇条書きでまとめてみました。

  • Rustには多種多様な標準ライブラリが存在する
  • これらのライブラリを利用するためには莫大なimportが必要になってしまう
  • というのもRustは型定義なども必要なので、対象の型を都度importしなくてはならないから
  • しかし、コード内に大量のimportをすることは可読性も悪くなってしまうので良くない
  • そこで、preludeが登場する
  • preludeは、Rust言語に含まれているすべて(ライブラリとか)がリストとして内包されている
  • そのため、preludeをimportするだけで自動的に使いたいトレイトにアクセスできるようになる

preludeの種類

preludeには、

use std::prelude::v1

みたいにかなり大きな範囲を賄うpreludeも存在しますが、一方で範囲を限定したものもあります。

例えば、std::io::prelude::*を使えば io に関するものをまとめたpreludeになります。

use std::io::prelude::*;

そのため、以前書いたコード内ではimportしたpreludeを利用していないように思えますが、実はstreamという変数にio関連の読み書き(read)できるようにトレイトアクセスを許可するために、preludeを使っているということになります。

Discussion