2021-01-11から1日間の記事一覧

forループ文

TL;DR for文で回すには、以下のトレイトのどれかを実装する必要がある。 Iterator IntoIterator 配列はforループで回せない 配列は、どちらも実装していないため、forループ文で直接回せない。 let arr = [1,2,3,4,5]; // NG for i in arr { dbg!(i); } /* e…

配列型

配列型 サイズ固定配列。[T; N]で表す。 生成には2つの構文がある。 [x, y, z] [x; N]: 値xはCopy実装型でなければならない 配列は以下のトレイトを実装する。(ただしTも同様に実装されている必要がある) Copy Clone Debug IntoIterator: &[T; N]もしくは&m…

Iterator::findクロージャーに&&を渡さなければならない理由

https://stackoverflow.com/questions/43828013/why-is-being-used-in-closure-arguments let a = [1, 2, 3]; assert_eq!(a.iter().find(|&&x| x == 2), Some(&2)); assert_eq!(a.iter().find(|&&x| x == 5), None); 回答 aは[i32;3]型 [i32;3]型はiterメソ…

refキーワード

ref キーワード 参照として値を受け取ることが出来る let ref num = 5; // &i32 パターンマッチ内でも使用することが出来る let mut triple = (1, 2, 3); match triple { (1, ref mut second, 3) => *second *= 2, _ => panic!(), } dbg!(triple); // (1, 4,…