見出し画像

Rust 借用とは 使い方と注意点について

今回はRustにおける借用について説明していきます。

借用とは

借用は所有権システムの核となる概念で、データに対する参照を安全に扱うためのメカニズムです。

所有権システムの目的は、メモリ安全性、スレッド間のデータ競合の防止、メモリリークの防止などを保証することにあります。


借用の使い方

借用にはイミュータブル借用とミュータブル借用という2種類あります。

イミュータブル借用

イミュータブル借用には以下の特徴があります。

・データへの読み取り専用アクセスを提供
・複数のイミュータブル借用が同時に存在
・データの変更は許可されない

fn print_value(value: &i32) {
    println!("Value: {}", value);
}

let x = 5;
print_value(&x);

上記コードではイミュータブル借用を使って値を関数に渡し、その値を表示しています。



ミュータブル借用

ミュータブル借用には以下の特徴があります。

・データへの読み書きアクセスを提供
・一度に一つのミュータブル借用のみが許可
・他のどの種類の借用も同時に存在することはできない

fn increment(value: &mut i32) {
    *value += 1;
}

let mut x = 5;
increment(&mut x);
println!("Incremented Value: {}", x);

上記コードではミュータブル借用を使って整数値をインクリメントを行い、その値を表示しています。


借用の注意点

ライフタイムの管理

借用された参照がその参照元のデータより長く生存しないようにする必要があります。
ライフタイムは通常、コンパイラによって自動的に推論されますが、複雑なシナリオでは明示的に指定する必要があることもあります。


ミュータブルとイミュータブルの競合

ミュータブル借用が存在する間は、そのデータに対する他の借用はできません。
イミュータブル借用が存在する間は、そのデータをミュータブルに借用することはできません。


データ競合の防止

Rustの借用ルールは、データ競合を防ぐために設計されています。
これにより、マルチスレッドプログラムが安全に実行されることが保証されます。


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

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

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

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


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

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

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

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


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

この経験に学べ

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