branch | transitional_engine |
changeset 15945 | 8f093b1b18bc |
parent 15943 | c5684cc62de8 |
child 16102 | 5d302b12d837 |
--- 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::*;