diff options
| author | bors <bors@rust-lang.org> | 2023-06-15 00:03:10 +0000 |
|---|---|---|
| committer | bors <bors@rust-lang.org> | 2023-06-15 00:03:10 +0000 |
| commit | 6ee4265ca6a7f037237974eeb66e8303282c6a4c (patch) | |
| tree | 5863c54ae56b238f764911acb9113070d389c27e /compiler/rustc_errors/src | |
| parent | 8c74a5d27c644a0f7a22bb2fa8dd3ff8257bc220 (diff) | |
| parent | 0c5f442db425e05de7f57b040a9818186981d952 (diff) | |
| download | rust-6ee4265ca6a7f037237974eeb66e8303282c6a4c.tar.gz rust-6ee4265ca6a7f037237974eeb66e8303282c6a4c.zip | |
Auto merge of #104455 - the8472:dont-drain-on-drop, r=Amanieu
Don't drain-on-drop in DrainFilter impls of various collections. This removes drain-on-drop behavior from various unstable DrainFilter impls (not yet for HashSet/Map) because that behavior [is problematic](https://github.com/rust-lang/rust/issues/43244#issuecomment-641638196) (because it can lead to panic-in-drop when user closures panic) and may become forbidden if [this draft RFC passes](https://github.com/rust-lang/rfcs/pull/3288). closes #101122 [ACP](https://github.com/rust-lang/libs-team/issues/136) affected tracking issues * #43244 * #70530 * #59618 Related hashbrown update: https://github.com/rust-lang/hashbrown/pull/374
Diffstat (limited to 'compiler/rustc_errors/src')
| -rw-r--r-- | compiler/rustc_errors/src/lib.rs | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/compiler/rustc_errors/src/lib.rs b/compiler/rustc_errors/src/lib.rs index 7a297ea0d5f..24d1cc8af82 100644 --- a/compiler/rustc_errors/src/lib.rs +++ b/compiler/rustc_errors/src/lib.rs @@ -4,7 +4,7 @@ #![doc(html_root_url = "https://doc.rust-lang.org/nightly/nightly-rustc/")] #![feature(array_windows)] -#![feature(drain_filter)] +#![feature(extract_if)] #![feature(if_let_guard)] #![feature(let_chains)] #![feature(never_type)] @@ -1399,7 +1399,7 @@ impl HandlerInner { !self.emitted_diagnostics.insert(diagnostic_hash) }; - diagnostic.children.drain_filter(already_emitted_sub).for_each(|_| {}); + diagnostic.children.extract_if(already_emitted_sub).for_each(|_| {}); self.emitter.emit_diagnostic(diagnostic); if diagnostic.is_error() { |
