Created
November 2, 2017 16:26
-
-
Save U007D/8314efd00a662b16f162b54632c1fe8d to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| //Index impl | |
| pub fn main() { | |
| let mut my_vec = vec![3, 2, 1]; | |
| for _ in 0..my_vec.len() { | |
| for i in 0..my_vec.len() - 1 { | |
| if my_vec[i] > my_vec[i + 1] { | |
| let tmp = my_vec[i]; | |
| my_vec[i] = my_vec[i + 1]; | |
| my_vec[i + 1] = tmp; | |
| } | |
| } | |
| } | |
| println!("{:?}", my_vec); | |
| } | |
| //Iterator impl #1 | |
| use std::mem; | |
| pub fn main() { | |
| let mut my_vec = vec![None, None, Some(1)]; | |
| (0..my_vec.len()) | |
| .for_each(|_| { | |
| let mut iter = my_vec.iter_mut(); | |
| let mut prev = iter.nth(0).expect("internal error: outer loop guard failure"); | |
| iter.for_each(|curr| { | |
| if prev > curr { mem::swap(prev, curr) } | |
| prev = curr; | |
| }); | |
| }); | |
| println!("{:?}", my_vec); | |
| } | |
| //Iterator impl #2 | |
| use std::mem; | |
| fn main() { | |
| let mut my_vec = vec![3, 2, 1]; | |
| (0..my_vec.len()) | |
| .for_each(|_| { | |
| let mut iter = my_vec.iter_mut(); | |
| let mut prev = None; | |
| iter.for_each(|curr| { | |
| if let Some(prev) = prev { | |
| if prev > curr { mem::swap(prev, curr) } | |
| } | |
| prev = Some(curr); | |
| }); | |
| }); | |
| println!("{:?}", my_vec); | |
| } |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment