Skip to content

Instantly share code, notes, and snippets.

@U007D
Created November 2, 2017 16:26
Show Gist options
  • Select an option

  • Save U007D/8314efd00a662b16f162b54632c1fe8d to your computer and use it in GitHub Desktop.

Select an option

Save U007D/8314efd00a662b16f162b54632c1fe8d to your computer and use it in GitHub Desktop.
//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