rustc : ver 1.77.1
初めまして Twil3 です。
いきなりなのですが、
関数を作るときに引数に
& を付けるのか、付けないのか。
mut を付けるのか、付けないのか。
わからないのですよね?!
そこで、自分なりに調べてみたので、まとめとして残しておきたいと思います!
稚拙な文章ですがどうぞ許してくださいm(_ _)m
今回は例として特定の値に1足して返す(add_one)関数を使って書いていきます。
まず、add_one関数を定義します。
add_one.rs
fn add_one() -> {
a+1
}
では、引数の設定をしたいのですが....
& を付けるのか mut を付けるのか、はたまた なにも付けない なのか判断が難しいんですよ!
ここで &,mutについて調べてみると、
-
&
-> 変数の値を用いて、新しく変数を作る ( = 参照 )
-> 元の変数の値を変更しない場合 -
mut
-> 変数の値自体を変更することが可能 ( = 可変 )
-> 元の変数の値を変更したい場合 -
なにも付けない
-> 変数の値自体を変更 ( = 所有権 )
-> 元の変数の値を変更したい場合
と、出てきました。
結局どうすればいいのか
つまるところ、今回の引数には **mut** もしくは **なにもつけない** のが正解ということになります。
add_one.rs
fn add_one(mut n: i32) -> i32 {
a+1
}
もしくは
add_one.rs
fn add_one(n: i32) -> i32 {
a+1
}
となるのですが、ここで上の.rsをコンパイルすると
add_one.rs -> warning
warning: variable does not need to be mutable
--> add_one.rs:1:12
|
1 | fn add_one(mut n: i8) -> i8 {
| ----^
| |
| help: remove this `mut`
|
= note: `#[warn(unused_mut)]` on by defaul
という Warning が出ます。
要約すると mut要らないよ! っていうことですね。
最後に
関数の引数で mut を使うことは多分少ないと思います。
まだ Rust を学び始めて間もないので全然わからないことが多いので、補足があれば是非教えてください!