@@ -3666,21 +3666,27 @@ impl<T, A: Allocator> Vec<T, A> {
3666
3666
/// Using this method is equivalent to the following code:
3667
3667
///
3668
3668
/// ```
3669
- /// # use std::cmp::min ;
3670
- /// # let some_predicate = |x: & mut i32| { *x == 2 || *x == 3 || *x == 6 } ;
3671
- /// # let mut vec = vec![1, 2, 3, 4, 5, 6] ;
3672
- /// # let range = 1..4 ;
3669
+ /// # let some_predicate = |x: &mut i32| { *x % 2 == 1 } ;
3670
+ /// # let mut vec = vec![0, 1, 2, 3, 4, 5, 6] ;
3671
+ /// # let mut vec2 = vec.clone() ;
3672
+ /// # let range = 1..5 ;
3673
3673
/// let mut i = range.start;
3674
- /// while i < min(vec.len(), range.end) {
3674
+ /// let end_items = vec.len() - range.end;
3675
+ /// # let mut extracted = vec![];
3676
+ ///
3677
+ /// while i < vec.len() - end_items {
3675
3678
/// if some_predicate(&mut vec[i]) {
3676
3679
/// let val = vec.remove(i);
3680
+ /// # extracted.push(val);
3677
3681
/// // your code here
3678
3682
/// } else {
3679
3683
/// i += 1;
3680
3684
/// }
3681
3685
/// }
3682
3686
///
3683
- /// # assert_eq!(vec, vec![1, 4, 5]);
3687
+ /// # let extracted2: Vec<_> = vec2.extract_if(range, some_predicate).collect();
3688
+ /// # assert_eq!(vec, vec2);
3689
+ /// # assert_eq!(extracted, extracted2);
3684
3690
/// ```
3685
3691
///
3686
3692
/// But `extract_if` is easier to use. `extract_if` is also more efficient,
0 commit comments