Sha256: 56f570c4b6a01704aacf93e7f17f89fe0f40f46ed6f9ede517abfe9adaf91f83
Contents?: true
Size: 917 Bytes
Versions: 38
Compression:
Stored size: 917 Bytes
Contents
/// Test that one can emulate join with `scope`: fn pseudo_join<F, G>(f: F, g: G) where F: FnOnce() + Send, G: FnOnce() + Send, { rayon_core::scope(|s| { s.spawn(|_| g()); f(); }); } fn quick_sort<T: PartialOrd + Send>(v: &mut [T]) { if v.len() <= 1 { return; } let mid = partition(v); let (lo, hi) = v.split_at_mut(mid); pseudo_join(|| quick_sort(lo), || quick_sort(hi)); } fn partition<T: PartialOrd + Send>(v: &mut [T]) -> usize { let pivot = v.len() - 1; let mut i = 0; for j in 0..pivot { if v[j] <= v[pivot] { v.swap(i, j); i += 1; } } v.swap(i, pivot); i } fn is_sorted<T: Send + Ord>(v: &[T]) -> bool { (1..v.len()).all(|i| v[i - 1] <= v[i]) } #[test] fn scope_join() { let mut v: Vec<i32> = (0..256).rev().collect(); quick_sort(&mut v); assert!(is_sorted(&v)); }
Version data entries
38 entries across 38 versions & 1 rubygems