見出し画像

Rust 関連関数とメソッドの違い 使い方と注意点について

Rustの関連関数とメソッドは、構造体や列挙型に付属する関数のことです。

関連関数は特定の型に関連付けられているものの、その型のインスタンスを必要としないのに対し、メソッドは、型のインスタンスに対して動作する関数です。


関連関数の使い方

関連関数は型に関連付けられた関数ですが、その型のインスタンスを必要としません。主に、型の初期化やユーティリティ関数として使われます。

関連関数の定義

関連関数はimplブロック内で定義され、Selfではなく型名で呼び出されます。

struct Rectangle {
    width: u32,
    height: u32,
}

impl Rectangle {
    fn new(width: u32, height: u32) -> Self {
        Self { width, height }
    }
}

構造体Rectangleに関連関数newを定義して、指定された幅と高さで新しいRectangleを作成します。


関連関数の呼び出し

関連関数はインスタンスではなく型名を使って呼び出されます。

let rect = Rectangle::new(10, 20);
println!("Width: {}, Height: {}", rect.width, rect.height);


メソッドの使い方

メソッドは、型のインスタンスに対して動作する関数です。メソッドは、通常、インスタンスを操作したり、インスタンスの状態に基づいた動作を行ったりします。


メソッドの定義

メソッドはselfを受け取ることで、型のインスタンスにアクセスできます。

impl Rectangle {
    fn area(&self) -> u32 {
        self.width * self.height
    }
}

構造体Rectangleにメソッドareaを定義して、selfを使ってそのインスタンスのフィールドにアクセスしています。


メソッドの呼び出し

メソッドはインスタンスを通じて呼び出されます。

let rect = Rectangle::new(10, 20);
let area = rect.area(); 
println!("Area: {}", area);


注意点

所有権と借用

メソッドは、self、&self、&mut selfなどの形式で定義できます。これによって、メソッドがインスタンスを所有するのか、借用するのかが変わります。


関連関数の用途

関連関数は、型の初期化やユーティリティ関数として使われます。関連関数がインスタンスを操作する必要がある場合、メソッドを使う方が適切です。


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

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

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

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


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

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

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

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


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

この経験に学べ

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