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


関連記事

Vue.js入門その4〜TODOアプリにサーバーサイドを追加してみる〜

1 はじめに2 準備2.1 今回作成したいもの2.2 環境構築3 サーバーサイド3.1 DB3.2 メモ:rails generateで余分なファイルを生成しない3.3 作成したファイル4 ビューの作 ...

Stripe Connectを使って継続課金にクーポンを適用する

1 はじめに2 クーポンについて2.1 クーポンのタイプ2.2 期間2.3 引き換え回数制限2.4 その他3 クーポンの作成4 クーポンの使用4.1 定期支払にクーポンを適用4.2 Checkoutで ...

rails

Shrineを使って画像をアップロードする

1 はじめに2 Shrineとは2.1 簡単な説明2.2 作者2.3 特徴3 下準備3.1 Gemを追加3.2 初期設定3.3 テーブルを作成する4 実装4.1 Uploaderの実装4.2 Mode ...

laravel logo

LaravelのDI

1 はじめに2 DIに関する機能2.1 DIとは2.2 サービスコンテナ2.3 サービスプロバイダ3 サービスコンテナ3.1 バインド3.2 bind3.3 bindIf3.4 singletonメソ ...

rails

Ruby、Railsの時間に関するメソッドを使用してみた

はじめに 普段PHPのお仕事をしています、tonnyです。 半年程前からRuby on Railsの勉強を始めました。 今回はよく使う時間に関するメソッドついてまとめたいと思います。 目次 1 はじめ ...

フォロー

blog-page_side_responsive

2023年6月
 123
45678910
11121314151617
18192021222324
252627282930  

アプリ情報

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