見出し画像

Rust プライベートとパブリックの使い方と注意点

Rustのプライベートとパブリックは、モジュールや項目のアクセスレベルを制御するための概念です。

Rustでは項目はデフォルトでプライベートですが、pubキーワードを使用してパブリックにすることができます。アクセスレベルの管理は、コードのカプセル化と情報隠蔽に役立ちます。


パブリックとプライベートの使い方

項目のアクセスレベル

Rustでは、構造体、関数、列挙型、モジュールなどの項目のアクセスレベルを制御できます。デフォルトではプライベートであり、同じモジュール内でのみアクセスできます。

struct PrivateStruct {
    field: i32, // プライベートフィールド
}

pub struct PublicStruct {
    pub field: i32, // パブリックフィールド
}

fn private_function() {
    // プライベート関数
}

pub fn public_function() {
    // パブリック関数
}

PrivateStructとprivate_functionはプライベートであり、同じモジュール内でのみアクセス可能です。一方、PublicStructとpublic_functionはパブリックであり、他のモジュールからもアクセス可能です。


モジュールのアクセスレベル

モジュール自体もパブリックまたはプライベートにすることができます。モジュールがパブリックである場合、内部のパブリックな項目も他のモジュールからアクセス可能です。

mod my_module {
    pub fn public_function() {
        println!("This is a public function");
    }

    fn private_function() {
        println("This is a private function");
    }
}

fn main() {
    my_module::public_function(); // アクセス可能
    // my_module::private_function(); // エラー:プライベートな関数
}

my_moduleはパブリックモジュールであり、public_functionは他のモジュールからアクセス可能です。一方、private_functionはプライベートであり、モジュール内からのみアクセスできます。


プライベートとパブリックの注意点

カプセル化と情報隠蔽

プライベートとパブリックは、カプセル化と情報隠蔽を実現するために重要です。デ
フォルトではプライベートであり、必要な項目のみパブリックにすることで、内部の実装を隠し、モジュールのインターフェイスを保護します。


安全なアクセスレベルの設定

パブリックにした項目は、他のモジュールからアクセス可能となるため、安全なアクセスレベルを設定することが重要です。特に、変更してはならないフィールドや、内部でのみ使用される関数はプライベートにしておくべきです。


アクセスレベルの明示

パブリックな項目は、pubキーワードを使って明示的に宣言します。これにより、アクセスレベルが意図的であることが明確になります。


モジュール間の依存関係

パブリックなモジュールや項目は、モジュール間の依存関係を生み出します。プライベートとパブリックの関係を適切に管理し、不要な依存関係を避けることが必要です。


Rustをもっと詳しくなりたい方に

Rustプログラミング完全ガイド 他言語との比較で違いが分かる!

個人的には他の言語開発もそれなりにあったことからこの本を読むことでかなりRustへの理解が深まりました。
プログラムやシステム的な専門用語は当たり前に登場するものの、他の言語での開発経験がある方なら問題ないでしょう。むしろその経験があることで、多言語との比較をしながら読み進めることができます。
内容的には大容量かつ丁寧すぎるほど嚙み砕いて説明がされているため、情報量は十分といえます。Rust自体学習コストが高く、難易度の高い言語のためこのくらいが妥当といえます。
プログラミング初心者レベルの方には難しい内容となっていますが、Rustの概念を理解し、基礎を把握することができる本であること間違いなしです。

Rust学習のために筆者が実際に読んでおすすめしたい本をまとめています。


基礎から学ぶRustプログラミング入門

本コースではRustについて全く経験がない方でもスムーズに学習を進められるようにとなっています。
基本的にはコードベースで解説を行い、抽象度が高く難しい内容に関しては適宜スライドも使いながら丁寧に解説します。そしてただ文法を学ぶだけではなく、最終的には演習としてCLIアプリケーションを作成し学習内容の定着を図ります。

以下の記事では筆者が実際に受講したおすすめUdemy教材をまとめています。

※本ページではアフィリエイトリンク(PR)が含まれています


この記事が参加している募集

この経験に学べ

この記事が気に入ったらサポートをしてみませんか?