Clone
トレイト境界がどうのと怒られる。
成果物
問題: cycle()
が使えない
list.iter().cycle()
error[E0277]: the trait bound `Iter<'_, i32>: std::clone::Clone` is not satisfied --> src/lib.rs:727:39 | 727 | for (i, value) in list.iter().cycle().enumerate() { assert_eq!(*value, expecteds[i]) } | ^^^^^ the trait `std::clone::Clone` is not implemented for `Iter<'_, i32>`
ダメだった対処
コメントアウトしたようなコードに変更してみたがエラーだった。
impl<T> LinkedList<T> { //impl<T> LinkedList<T> where T: Clone {
// pub fn iter<T: Clone>(&self) -> Iter<'_, T> { // pub fn iter<T>(&self) where T: Clone -> Iter<'_, T> { pub fn iter(&self) -> Iter<'_, T> { Iter { next: self.head.as_ref().map(|node| &**node) } }
所感
わからん。トレイト境界を足せばいいだけだと思ったが、トレイト境界のこともよく分からん。何がわかっていないかもわからん。
対象環境
- Raspbierry pi 3 Model B+
- Raspbian stretch 9.0 2018-11-13
- bash 4.4.12(1)-release
- rustc 1.34.2 (6c2484dc3 2019-05-13)
- cargo 1.34.0 (6789d8a0a 2019-04-01)
$ uname -a Linux raspberrypi 4.19.42-v7+ #1219 SMP Tue May 14 21:20:58 BST 2019 armv7l GNU/Linux
前回まで
- Rust学習まとめ(ドキュメント)
- Rust自習(じゃんけんゲーム1)
- Rust自習(双方向リスト1)
- Rust自習(単方向リスト1)
- Rust自習(単方向リスト2)
- Rust自習(単方向リスト3)
- Rust自習(単方向リスト4)
- Rust自習(単方向リスト5)
- Rust自習(単方向リスト6)
- Rust自習(単方向リスト7)
- Rust自習(リストのインタフェースを考える)
- Rust自習(連結リスト1)
- Rust自習(連結リスト2)
- Rust自習(連結リスト3)
- Rust自習(連結リスト4)
- Rust自習(連結リストの取得系インタフェース考察)
- Rust自習(連結リスト5)
- Rust自習(連結リストの取得系インタフェース考察2)
- Rust自習(連結リスト6)
- Rust自習(連結リスト7)
- Rust自習(連結リスト8)
- Rust自習(連結リスト9)
- Rust自習(変数名でイテレートする方法)
- Rust自習(iter、iter_mut実装方法)
- Rust自習(連結リスト10)
- Rust自習(Rust自習(rev()を実装できず))