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


関連記事

Go言語

goroutineとchannelとContext

1 はじめに2 並行処理と並列処理3 goroutine4 channel4.1 channelからデータ受信4.2 for-range でのデータ受信4.3 複数のchannelを受信4.4 buf ...

laravel logo

Laravel Admin でCSVインポートを実装する

1 はじめに2 下準備2.1 Laravel Adminの導入2.2 Laravel Excelの導入3 Laravel Excelの実装3.1 Importクラスの作成3.2 モデルのfillabl ...

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

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

rails

deviseを使ってユーザ登録フォームを作る

1 はじめに1.1 前提条件2 deviseについて2.1 deviseとは2.2 deviseでできること3 登録処理の実装3.1 Gemのインストール3.2 deviseのインストール3.3 デフ ...

laravel logo

LaravelのArtisanコマンドを自作する

1 はじめに2 コマンドの作成方法3 コマンドの実装3.1 文字列出力3.2 引数3.3 オプション3.4 入力を使用した対話型3.4.1 ask()メソッド3.4.2 secret()メソッド3.4 ...

フォロー

blog-page_side_responsive

2023年6月
 123
45678910
11121314151617
18192021222324
252627282930  

アプリ情報

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