rust/vec2d/src/lib.rs
branchtransitional_engine
changeset 15915 8f093b1b18bc
parent 15913 c5684cc62de8
--- a/rust/vec2d/src/lib.rs	Wed Feb 01 11:19:45 2023 +0100
+++ b/rust/vec2d/src/lib.rs	Thu Feb 02 08:41:31 2023 +0100
@@ -143,6 +143,17 @@
     }
 }
 
+impl<T: Clone> Vec2D<T> {
+    pub fn from_iter<I: IntoIterator<Item = T>>(iter: I, size: &Size) -> Option<Vec2D<T>> {
+        let data: Vec<T> = iter.into_iter().collect();
+        if size.width * size.height == data.len() {
+            Some(Vec2D { data, size: *size })
+        } else {
+            None
+        }
+    }
+}
+
 #[cfg(test)]
 mod tests {
     use super::*;