Skip to content

Commit 114d5f2

Browse files
committed
s/drain_filter/extract_if/ for Vec, Btree{Map,Set} and LinkedList
1 parent b7ce7ed commit 114d5f2

File tree

31 files changed

+204
-216
lines changed

31 files changed

+204
-216
lines changed

compiler/rustc_errors/src/lib.rs

+2-2
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
55
#![doc(html_root_url = "https://doc.rust-lang.org/nightly/nightly-rustc/")]
66
#![feature(array_windows)]
7-
#![feature(drain_filter)]
7+
#![feature(extract_if)]
88
#![feature(if_let_guard)]
99
#![feature(let_chains)]
1010
#![feature(never_type)]
@@ -1399,7 +1399,7 @@ impl HandlerInner {
13991399
!self.emitted_diagnostics.insert(diagnostic_hash)
14001400
};
14011401

1402-
diagnostic.children.drain_filter(already_emitted_sub).for_each(|_| {});
1402+
diagnostic.children.extract_if(already_emitted_sub).for_each(|_| {});
14031403

14041404
self.emitter.emit_diagnostic(diagnostic);
14051405
if diagnostic.is_error() {

compiler/rustc_hir_analysis/src/lib.rs

-1
Original file line numberDiff line numberDiff line change
@@ -59,7 +59,6 @@ This API is completely unstable and subject to change.
5959
#![doc(html_root_url = "https://doc.rust-lang.org/nightly/nightly-rustc/")]
6060
#![feature(box_patterns)]
6161
#![feature(control_flow_enum)]
62-
#![feature(drain_filter)]
6362
#![feature(hash_drain_filter)]
6463
#![feature(if_let_guard)]
6564
#![feature(is_sorted)]

compiler/rustc_hir_typeck/src/lib.rs

-1
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,6 @@
55
#![feature(box_patterns)]
66
#![feature(min_specialization)]
77
#![feature(control_flow_enum)]
8-
#![feature(drain_filter)]
98
#![feature(option_as_slice)]
109
#![allow(rustc::potential_query_instability)]
1110
#![recursion_limit = "256"]

compiler/rustc_metadata/src/lib.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
#![doc(html_root_url = "https://doc.rust-lang.org/nightly/nightly-rustc/")]
22
#![feature(decl_macro)]
3-
#![feature(drain_filter)]
3+
#![feature(extract_if)]
44
#![feature(generators)]
55
#![feature(iter_from_generator)]
66
#![feature(let_chains)]

compiler/rustc_metadata/src/native_libs.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -425,7 +425,7 @@ impl<'tcx> Collector<'tcx> {
425425
// can move them to the end of the list below.
426426
let mut existing = self
427427
.libs
428-
.drain_filter(|lib| {
428+
.extract_if(|lib| {
429429
if lib.name.as_str() == passed_lib.name {
430430
// FIXME: This whole logic is questionable, whether modifiers are
431431
// involved or not, library reordering and kind overriding without

compiler/rustc_middle/src/lib.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -54,7 +54,7 @@
5454
#![feature(try_reserve_kind)]
5555
#![feature(nonzero_ops)]
5656
#![feature(decl_macro)]
57-
#![feature(drain_filter)]
57+
#![feature(extract_if)]
5858
#![feature(intra_doc_pointers)]
5959
#![feature(yeet_expr)]
6060
#![feature(result_option_inspect)]

compiler/rustc_middle/src/ty/diagnostics.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -237,7 +237,7 @@ pub fn suggest_constraining_type_params<'a>(
237237

238238
{
239239
let mut sized_constraints =
240-
constraints.drain_filter(|(_, def_id)| *def_id == tcx.lang_items().sized_trait());
240+
constraints.extract_if(|(_, def_id)| *def_id == tcx.lang_items().sized_trait());
241241
if let Some((constraint, def_id)) = sized_constraints.next() {
242242
applicability = Applicability::MaybeIncorrect;
243243

compiler/rustc_mir_transform/src/lib.rs

-1
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,6 @@
22
#![deny(rustc::untranslatable_diagnostic)]
33
#![deny(rustc::diagnostic_outside_of_impl)]
44
#![feature(box_patterns)]
5-
#![feature(drain_filter)]
65
#![feature(is_sorted)]
76
#![feature(let_chains)]
87
#![feature(map_try_insert)]

compiler/rustc_mir_transform/src/sroa.rs

+6-8
Original file line numberDiff line numberDiff line change
@@ -436,26 +436,24 @@ impl<'tcx, 'll> MutVisitor<'tcx> for ReplacementVisitor<'tcx, 'll> {
436436
VarDebugInfoContents::Composite { ty: _, ref mut fragments } => {
437437
let mut new_fragments = Vec::new();
438438
debug!(?fragments);
439-
fragments
440-
.drain_filter(|fragment| {
441-
if let Some(repl) =
439+
fragments.retain_mut(|fragment| {
440+
if let Some(repl) =
442441
self.replacements.replace_place(self.tcx, fragment.contents.as_ref())
443442
{
444443
fragment.contents = repl;
445-
false
444+
true
446445
} else if let Some(local) = fragment.contents.as_local()
447446
&& let Some(frg) = self.gather_debug_info_fragments(local)
448447
{
449448
new_fragments.extend(frg.into_iter().map(|mut f| {
450449
f.projection.splice(0..0, fragment.projection.iter().copied());
451450
f
452451
}));
453-
true
454-
} else {
455452
false
453+
} else {
454+
true
456455
}
457-
})
458-
.for_each(drop);
456+
});
459457
debug!(?fragments);
460458
debug!(?new_fragments);
461459
fragments.extend(new_fragments);

compiler/rustc_resolve/src/diagnostics.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -2494,7 +2494,7 @@ fn show_candidates(
24942494
for path_strings in [&mut accessible_path_strings, &mut inaccessible_path_strings] {
24952495
path_strings.sort_by(|a, b| a.0.cmp(&b.0));
24962496
let core_path_strings =
2497-
path_strings.drain_filter(|p| p.0.starts_with("core::")).collect::<Vec<_>>();
2497+
path_strings.extract_if(|p| p.0.starts_with("core::")).collect::<Vec<_>>();
24982498
path_strings.extend(core_path_strings);
24992499
path_strings.dedup_by(|a, b| a.0 == b.0);
25002500
}

compiler/rustc_resolve/src/late/diagnostics.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -496,7 +496,7 @@ impl<'a: 'ast, 'ast, 'tcx> LateResolutionVisitor<'a, '_, 'ast, 'tcx> {
496496
// Try to filter out intrinsics candidates, as long as we have
497497
// some other candidates to suggest.
498498
let intrinsic_candidates: Vec<_> = candidates
499-
.drain_filter(|sugg| {
499+
.extract_if(|sugg| {
500500
let path = path_names_to_string(&sugg.path);
501501
path.starts_with("core::intrinsics::") || path.starts_with("std::intrinsics::")
502502
})

compiler/rustc_resolve/src/lib.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@
99
#![doc(html_root_url = "https://doc.rust-lang.org/nightly/nightly-rustc/")]
1010
#![feature(assert_matches)]
1111
#![feature(box_patterns)]
12-
#![feature(drain_filter)]
12+
#![feature(extract_if)]
1313
#![feature(if_let_guard)]
1414
#![feature(iter_intersperse)]
1515
#![feature(let_chains)]

compiler/rustc_trait_selection/src/lib.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@
1414
#![feature(associated_type_bounds)]
1515
#![feature(box_patterns)]
1616
#![feature(control_flow_enum)]
17-
#![feature(drain_filter)]
17+
#![feature(extract_if)]
1818
#![feature(hash_drain_filter)]
1919
#![feature(let_chains)]
2020
#![feature(if_let_guard)]

compiler/rustc_trait_selection/src/traits/mod.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -354,7 +354,7 @@ pub fn normalize_param_env_or_error<'tcx>(
354354
// This works fairly well because trait matching does not actually care about param-env
355355
// TypeOutlives predicates - these are normally used by regionck.
356356
let outlives_predicates: Vec<_> = predicates
357-
.drain_filter(|predicate| {
357+
.extract_if(|predicate| {
358358
matches!(
359359
predicate.kind().skip_binder(),
360360
ty::PredicateKind::Clause(ty::Clause::TypeOutlives(..))

compiler/rustc_traits/src/lib.rs

-1
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,6 @@
44
#![deny(rustc::untranslatable_diagnostic)]
55
#![deny(rustc::diagnostic_outside_of_impl)]
66
#![feature(let_chains)]
7-
#![feature(drain_filter)]
87
#![recursion_limit = "256"]
98

109
#[macro_use]

library/alloc/benches/btree/map.rs

+6-6
Original file line numberDiff line numberDiff line change
@@ -385,15 +385,15 @@ pub fn clone_slim_100_and_clear(b: &mut Bencher) {
385385
#[bench]
386386
pub fn clone_slim_100_and_drain_all(b: &mut Bencher) {
387387
let src = slim_map(100);
388-
b.iter(|| src.clone().drain_filter(|_, _| true).count())
388+
b.iter(|| src.clone().extract_if(|_, _| true).count())
389389
}
390390

391391
#[bench]
392392
pub fn clone_slim_100_and_drain_half(b: &mut Bencher) {
393393
let src = slim_map(100);
394394
b.iter(|| {
395395
let mut map = src.clone();
396-
assert_eq!(map.drain_filter(|i, _| i % 2 == 0).count(), 100 / 2);
396+
assert_eq!(map.extract_if(|i, _| i % 2 == 0).count(), 100 / 2);
397397
assert_eq!(map.len(), 100 / 2);
398398
})
399399
}
@@ -456,15 +456,15 @@ pub fn clone_slim_10k_and_clear(b: &mut Bencher) {
456456
#[bench]
457457
pub fn clone_slim_10k_and_drain_all(b: &mut Bencher) {
458458
let src = slim_map(10_000);
459-
b.iter(|| src.clone().drain_filter(|_, _| true).count())
459+
b.iter(|| src.clone().extract_if(|_, _| true).count())
460460
}
461461

462462
#[bench]
463463
pub fn clone_slim_10k_and_drain_half(b: &mut Bencher) {
464464
let src = slim_map(10_000);
465465
b.iter(|| {
466466
let mut map = src.clone();
467-
assert_eq!(map.drain_filter(|i, _| i % 2 == 0).count(), 10_000 / 2);
467+
assert_eq!(map.extract_if(|i, _| i % 2 == 0).count(), 10_000 / 2);
468468
assert_eq!(map.len(), 10_000 / 2);
469469
})
470470
}
@@ -527,15 +527,15 @@ pub fn clone_fat_val_100_and_clear(b: &mut Bencher) {
527527
#[bench]
528528
pub fn clone_fat_val_100_and_drain_all(b: &mut Bencher) {
529529
let src = fat_val_map(100);
530-
b.iter(|| src.clone().drain_filter(|_, _| true).count())
530+
b.iter(|| src.clone().extract_if(|_, _| true).count())
531531
}
532532

533533
#[bench]
534534
pub fn clone_fat_val_100_and_drain_half(b: &mut Bencher) {
535535
let src = fat_val_map(100);
536536
b.iter(|| {
537537
let mut map = src.clone();
538-
assert_eq!(map.drain_filter(|i, _| i % 2 == 0).count(), 100 / 2);
538+
assert_eq!(map.extract_if(|i, _| i % 2 == 0).count(), 100 / 2);
539539
assert_eq!(map.len(), 100 / 2);
540540
})
541541
}

library/alloc/benches/btree/set.rs

+4-4
Original file line numberDiff line numberDiff line change
@@ -69,15 +69,15 @@ pub fn clone_100_and_clear(b: &mut Bencher) {
6969
#[bench]
7070
pub fn clone_100_and_drain_all(b: &mut Bencher) {
7171
let src = slim_set(100);
72-
b.iter(|| src.clone().drain_filter(|_| true).count())
72+
b.iter(|| src.clone().extract_if(|_| true).count())
7373
}
7474

7575
#[bench]
7676
pub fn clone_100_and_drain_half(b: &mut Bencher) {
7777
let src = slim_set(100);
7878
b.iter(|| {
7979
let mut set = src.clone();
80-
assert_eq!(set.drain_filter(|i| i % 2 == 0).count(), 100 / 2);
80+
assert_eq!(set.extract_if(|i| i % 2 == 0).count(), 100 / 2);
8181
assert_eq!(set.len(), 100 / 2);
8282
})
8383
}
@@ -140,15 +140,15 @@ pub fn clone_10k_and_clear(b: &mut Bencher) {
140140
#[bench]
141141
pub fn clone_10k_and_drain_all(b: &mut Bencher) {
142142
let src = slim_set(10_000);
143-
b.iter(|| src.clone().drain_filter(|_| true).count())
143+
b.iter(|| src.clone().extract_if(|_| true).count())
144144
}
145145

146146
#[bench]
147147
pub fn clone_10k_and_drain_half(b: &mut Bencher) {
148148
let src = slim_set(10_000);
149149
b.iter(|| {
150150
let mut set = src.clone();
151-
assert_eq!(set.drain_filter(|i| i % 2 == 0).count(), 10_000 / 2);
151+
assert_eq!(set.extract_if(|i| i % 2 == 0).count(), 10_000 / 2);
152152
assert_eq!(set.len(), 10_000 / 2);
153153
})
154154
}

library/alloc/benches/lib.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
// Disabling on android for the time being
22
// See https://github.com/rust-lang/rust/issues/73535#event-3477699747
33
#![cfg(not(target_os = "android"))]
4-
#![feature(btree_drain_filter)]
4+
#![feature(btree_extract_if)]
55
#![feature(iter_next_chunk)]
66
#![feature(repr_simd)]
77
#![feature(slice_partition_dedup)]

0 commit comments

Comments
 (0)