diff --git a/roc_std/src/lib.rs b/roc_std/src/lib.rs index 7a43488882..16d1eb4660 100644 --- a/roc_std/src/lib.rs +++ b/roc_std/src/lib.rs @@ -311,6 +311,25 @@ impl<'a, T> IntoIterator for &'a RocList { } } +impl IntoIterator for RocList { + type Item = T; + + type IntoIter = IntoIter; + + fn into_iter(self) -> Self::IntoIter { + let remaining = self.len(); + + let buf = unsafe { NonNull::new_unchecked(self.elements as _) }; + let ptr = self.elements; + + IntoIter { + buf, + ptr, + remaining, + } + } +} + use core::ptr::NonNull; pub struct IntoIter {