質問
以下のコードのfirst_element
関数で,&&list[0]
という&&i32
型の値を返しています.関数は&i32
型の値を返すべきであるのに&&i32
の値を返しているので,型不一致のエラーにが起こるはずなのにエラーになりません.出力も正しいです.
ソースコード
rust
1fn main() { 2 let list = [1, 2, 3]; 3 4 println!("{}", first_element(&list)); 5} 6 7fn first_element(list: &[i32]) -> &i32 { 8 &&list[0] 9} 10
試したこと
&&list[0]
をlist[0]
にするとmismatched types
のエラーが発生.
error[E0308]: mismatched types --> src/main.rs:8:5 | 8 | list[0] | ^^^^^^^ | | | expected &i32, found i32 | help: consider borrowing here: `&list[0]` | = note: expected type `&i32` found type `i32`
なぜか&&list[0]
の&
の数を変えても(&
がついている限り)エラーが起きない.すなわち&list[0]
や&&&list[0]
や&&&&list[0]
ではエラーが起きない.出力も正しい.
補足情報
cargo 1.38.0
rustc 1.38.0
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。