Skip to content

Commit

Permalink
[naga] Make Arena::drain a proper drain.
Browse files Browse the repository at this point in the history
  • Loading branch information
jimblandy committed Feb 8, 2024
1 parent 737d162 commit 19a3714
Show file tree
Hide file tree
Showing 2 changed files with 7 additions and 6 deletions.
8 changes: 5 additions & 3 deletions naga/src/arena.rs
Original file line number Diff line number Diff line change
Expand Up @@ -298,10 +298,12 @@ impl<T> Arena<T> {
}

/// Drains the arena, returning an iterator over the items stored.
pub fn drain(self) -> impl DoubleEndedIterator<Item = (Handle<T>, T, Span)> {
self.data
pub fn drain(&mut self) -> impl DoubleEndedIterator<Item = (Handle<T>, 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) })
}
Expand Down
5 changes: 2 additions & 3 deletions naga/src/back/pipeline_constants.rs
Original file line number Diff line number Diff line change
@@ -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;

Expand All @@ -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 {
Expand Down

0 comments on commit 19a3714

Please sign in to comment.