From 19a3714159f8236e312e0e414e0fa654d698b184 Mon Sep 17 00:00:00 2001 From: Jim Blandy Date: Tue, 6 Feb 2024 13:44:20 -0800 Subject: [PATCH] [naga] Make `Arena::drain` a proper `drain`. --- naga/src/arena.rs | 8 +++++--- naga/src/back/pipeline_constants.rs | 5 ++--- 2 files changed, 7 insertions(+), 6 deletions(-) diff --git a/naga/src/arena.rs b/naga/src/arena.rs index 45ea3ca76f0..6726acdd3cb 100644 --- a/naga/src/arena.rs +++ b/naga/src/arena.rs @@ -298,10 +298,12 @@ impl Arena { } /// Drains the arena, returning an iterator over the items stored. - pub fn drain(self) -> impl DoubleEndedIterator, T, Span)> { - self.data + pub fn drain(&mut self) -> impl DoubleEndedIterator, T, Span)> { + let arena = std::mem::take(self); + arena + .data .into_iter() - .zip(self.span_info.into_iter()) + .zip(arena.span_info.into_iter()) .enumerate() .map(|(i, (v, span))| unsafe { (Handle::from_usize_unchecked(i), v, span) }) } diff --git a/naga/src/back/pipeline_constants.rs b/naga/src/back/pipeline_constants.rs index 02d8383a214..5340748bc65 100644 --- a/naga/src/back/pipeline_constants.rs +++ b/naga/src/back/pipeline_constants.rs @@ -1,5 +1,5 @@ use super::PipelineConstants; -use crate::{Arena, Constant, Expression, Literal, Module, Scalar, Span, TypeInner}; +use crate::{Constant, Expression, Literal, Module, Scalar, Span, TypeInner}; use std::borrow::Cow; use thiserror::Error; @@ -22,9 +22,8 @@ pub(super) fn process_overrides<'a>( } let mut module = module.clone(); - let overrides = std::mem::replace(&mut module.overrides, Arena::new()); - for (_handle, override_, span) in overrides.drain() { + for (_handle, override_, span) in module.overrides.drain() { let key = if let Some(id) = override_.id { Cow::Owned(id.to_string()) } else if let Some(ref name) = override_.name {