Rustの初心者です。
本に書いてあることで、わからないことがあるので教えていただきたいです。
よろしくお願いします。
イテレーターの戻り値が Option<usize> ですが println!("{}", num);の書式でエラーにならないのはなぜでしょうか?
まずエラーになるコードです。
lang
1// Option<usize> doesn't implement `std::fmt::Display` と言われてエラーになる 2fn main() { 3 let o = Option::<usize>::Some(5); 4 println!("{}", o); 5}
次はエラーにならないコードです。
イテレーターはOption<usize>を返すと解釈していますが、エラーになりません。
lang
1fn main() { 2 let it = Iter { 3 current: 0, 4 max: 10, 5 }; 6 for num in it { 7 println!("{}", num); 8 } 9} 10 11struct Iter { 12 current: usize, 13 max: usize, 14} 15 16impl Iterator for Iter { 17 type Item = usize; 18 19 fn next(&mut self) -> Option<usize> { 20 self.current += 1; 21 if self.current - 1 < self.max { 22 Some(self.current - 1) 23 } else { 24 None 25 } 26 } 27} 28
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2022/01/08 23:06
2022/01/09 00:19 編集
2022/01/09 01:06