関数パラメーターにおける参照外し
関数パラメーターにおいても参照外しを行うことができる
例1 クロージャー map関数
let result = [1,2,3,4,5].iter().map(|&&x| x % 2 == 0).collect();
&&x
: 参照参照外しをおこなっている
例2 関数の定義
参照外ししない場合
fn print_type_name<T>(_val: T) { println!("{}", std::any::type_name::<T>()); } let vec = (0..5).collect::<Vec<i32>>(); for i in &vec { print_type_name(i); // &i32 }
参照外しをした場合
fn print_type_name<T>(_val: &T) { println!("{}", std::any::type_name::<T>()); } let vec = (0..5).collect::<Vec<i32>>(); for i in &vec { print_type_name(i); // i32 }