diff options
| author | bors <bors@rust-lang.org> | 2025-05-05 05:24:37 +0000 | 
|---|---|---|
| committer | bors <bors@rust-lang.org> | 2025-05-05 05:24:37 +0000 | 
| commit | 54d024e4bf462c77a86c4126d7e66d89b64f053a (patch) | |
| tree | 84176912f42c791fa15d97649b845a759a036d58 /library/alloc/src | |
| parent | cd55868a8db4b9394be64082a290f11b1e03b5d3 (diff) | |
| parent | 512dab0bee66ed70062f49c2ce7ca13ea6e76b8e (diff) | |
| download | rust-54d024e4bf462c77a86c4126d7e66d89b64f053a.tar.gz rust-54d024e4bf462c77a86c4126d7e66d89b64f053a.zip | |
Auto merge of #140650 - tgross35:rollup-0mp4h1s, r=tgross35
Rollup of 4 pull requests Successful merges: - #135734 (Correct `extract_if` sample equivalent.) - #140307 (Refactor rustc_on_unimplemented's filter parser) - #140644 (Revert "Avoid unused clones in Cloned<I> and Copied<I>") - #140648 (Update `compiler-builtins` to 0.1.157) r? `@ghost` `@rustbot` modify labels: rollup
Diffstat (limited to 'library/alloc/src')
| -rw-r--r-- | library/alloc/src/vec/mod.rs | 18 | 
1 files changed, 12 insertions, 6 deletions
| diff --git a/library/alloc/src/vec/mod.rs b/library/alloc/src/vec/mod.rs index 72279e12192..a97912304c8 100644 --- a/library/alloc/src/vec/mod.rs +++ b/library/alloc/src/vec/mod.rs @@ -3666,21 +3666,27 @@ impl<T, A: Allocator> Vec<T, A> { /// Using this method is equivalent to the following code: /// /// ``` - /// # use std::cmp::min; - /// # let some_predicate = |x: &mut i32| { *x == 2 || *x == 3 || *x == 6 }; - /// # let mut vec = vec![1, 2, 3, 4, 5, 6]; - /// # let range = 1..4; + /// # let some_predicate = |x: &mut i32| { *x % 2 == 1 }; + /// # let mut vec = vec![0, 1, 2, 3, 4, 5, 6]; + /// # let mut vec2 = vec.clone(); + /// # let range = 1..5; /// let mut i = range.start; - /// while i < min(vec.len(), range.end) { + /// let end_items = vec.len() - range.end; + /// # let mut extracted = vec![]; + /// + /// while i < vec.len() - end_items { /// if some_predicate(&mut vec[i]) { /// let val = vec.remove(i); + /// # extracted.push(val); /// // your code here /// } else { /// i += 1; /// } /// } /// - /// # assert_eq!(vec, vec![1, 4, 5]); + /// # let extracted2: Vec<_> = vec2.extract_if(range, some_predicate).collect(); + /// # assert_eq!(vec, vec2); + /// # assert_eq!(extracted, extracted2); /// ``` /// /// But `extract_if` is easier to use. `extract_if` is also more efficient, | 
