В этом конкретном случае наиболее идиоматическим решением c будет
fn largest_i32(list: &[i32]) -> i32 {
*list.iter().max().unwrap()
}
Но если бы мне пришлось выбирать между двумя написанными вами функциями, я бы выбрал вторую.
//This syntax seems confusing to me, Is rust doing derefrecing iteself.
for
петли принимают паттерн . list.iter()
является итератором для элементов с типом &i32
, который сопоставляется с шаблоном &item
, поэтому item
является деструктурированным в i32
. Это имеет тот же эффект, что и разыменование.
Сопоставление с образцом распространено в Rust. Вы можете прочитать обо всех местах, где разрешены шаблоны здесь .