BackEnd

Rust入門してみた その4 モジュール編

投稿日:

はじめに

これまでの記事ではmain.rsに全てのコードを書いてきました。しかし、実際にはファイルを分割してコードの見通しを良くしたくなると思います。そういった場合に必要となる、Rustのモジュールについて今回調べました。

Rustのモジュール

それでは、前回作ったコードを分割していき、次のような構造にしたいと思います。

  • model/
    • enums.rs
    • message.rs
  • main.rs
  • model.rs

Rustではファイル分割していくと、そのファイル単位がモジュールとなります。上記の構造の場合、modelモジュールがあり、そのサブモジュールとしてさらにenumsとmessagesがあるという状態です。

それでは、1つずつ見ていきます。

モジュールツリーの構築

Rustはビルド時にルートモジュールを起点にビルドされます。デフォルトではmain.rsとlib.rsがルートとなっています。(今回はmain.rsをルートとした例を取り上げます。)
main.rsとlib.rs以外に作成したモジュールは、 mod キーワードを使ってモジュールを宣言し、そのモジュール名と同名のRustファイルを読み込ませる必要があります。

例えば、今回の例ではmain.rsに次のように宣言します。

こうすることで、model.rsがビルド対象に組み込まれました。

サブモジュール

今回の例では、models.rsとmodelsディレクトリの両方があり、modelsディレクトリには2つのRustファイルが入っていることに気が付きます。
これは、Rustでのサブモジュールの作り方となっていて、この作り方を説明します。

まず、models.rsは次のような内容となっています。

再び、modが出てきました。ここでは、モジュール名と同名のディレクトリ以下のサブモジュールを宣言しています。
models.rsは既にmain.rsでmod宣言されているため、このようにすることで末端までモジュールツリーが構成され、ビルド対象となります。

各モジュールの実装

一旦、ここで各モジュールの実装をしていきます。
まずは、enums.rsです。

次に、messages.rsです。

最後に、main.rsです。

モジュールのプライバシー

モジュールをpublicにするのか、privateにするのか制御するためには、pubキーワードを使います。pubキーワードを付加すると、同じディレクトリ階層に公開することができます。

例えば、Content Enumはpubが付いているので、modelディレクトリ配下で公開されています。そのため、message.rsで使用することができています。

また、model.rsでmodの宣言時にも pub mod enums のように、pubキーワードが使われています。このようにすることで、サブモジュールを1津上のディレクトリに公開することができます。

さいごに

今回はRustのモジュールについて調べた内容をまとめました。次回もRustを深掘りしていきたいと思います!

おすすめ書籍

Webアプリ開発で学ぶ Rust言語入門 パーフェクトRust プログラミングRust 第2版

blog-page_footer_336




blog-page_footer_336




-BackEnd
-

執筆者:

免責事項

このブログは、記事上部に記載のある投稿日時点の一般的な情報を提供するものであり、投資等の勧誘・法的・税務上の助言を提供するものではありません。仮想通貨の投資・損益計算は複雑であり、個々の取引状況や法律の変更によって異なる可能性があります。ブログに記載された情報は参考程度のものであり、特定の状況に基づいた行動の決定には専門家の助言を求めることをお勧めします。当ブログの情報に基づいた行動に関連して生じた損失やリスクについて、筆者は責任を負いかねます。最新の法律や税務情報を確認し、必要に応じて専門家に相談することをお勧めします。


comment

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

CAPTCHA


関連記事

rails

Shrineでアップロードする際に画像を加工する

1 はじめに2 アップロードする画像のリサイズ2.1 Gemを追加2.2 Uploaderの修正3 サムネイルを作成する3.1 Uploaderの修正3.2 サムネイルを表示する4 バリデーションの追 ...

Pythonコードが育っても品質を維持するツールを考える[Ruff Pyright]

1 はじめに2 各ツールの目的2.1 Ruff2.1.1 Pylint (参考)2.2 Pyright3 各ツールの設定 (VSCodeでの使用例)3.1 Ruff3.2 Pyright4 pre-c ...

docker-syncでファイルの同期を高速化する

1 はじめに2 docker-syncの導入3 設定ファイルの作成3.1 docker-composer.yml3.2 docker-compose-dev.yml3.3 docker-sync.ym ...

Go言語

Go言語で使えるmigrationライブラリ

1 はじめに2 migrationライブラリ2.1 goose2.2 sql-migrate2.3 migu2.4 pop2.5 sqldef3 sqldefを使ってみる3.1 導入3.2 テーブルを ...

Go言語

Go言語で使えるORMライブラリ

1 はじめに2 ORMライブラリ2.1 GORM2.2 SQLBoiler3 GORMを使ってみる3.1 導入3.2 migration3.3 insert3.4 select3.5 update3. ...

フォロー

blog-page_side_responsive

2023年6月
 123
45678910
11121314151617
18192021222324
252627282930  

アプリ情報

私たちは無料アプリもリリースしています、ぜひご覧ください。 下記のアイコンから無料でダウンロードできます。