Fallible from_parts
diff --git a/sparse_strips/vello_api/src/pixmap.rs b/sparse_strips/vello_api/src/pixmap.rs
index 4f17d89..66a160f 100644
--- a/sparse_strips/vello_api/src/pixmap.rs
+++ b/sparse_strips/vello_api/src/pixmap.rs
@@ -31,13 +31,20 @@
/// Create a new pixmap with the given underlying data interpreted as premultiplied RGBA8.
///
- /// If `data` is not of the right length (`width * height * 4`). If `data` has to grow, the new
- /// color components are filled with `0`.
+ /// The `data` vector must be of length `width * height * 4` exactly.
///
/// The pixels are in row-major order. Each pixel consists of four bytes in the order
/// `[r, g, b, a]`.
- pub fn from_parts(mut data: Vec<u8>, width: u16, height: u16) -> Self {
- data.resize(usize::from(width) * usize::from(height) * 4, 0);
+ ///
+ /// # Panics
+ ///
+ /// Panics if the `data` vector is not of length `width * height * 4`.
+ pub fn from_parts(data: Vec<u8>, width: u16, height: u16) -> Self {
+ assert_eq!(
+ data.len(),
+ usize::from(width) * usize::from(height) * 4,
+ "Expected `data` to have length of exactly `width * height * 4`"
+ );
Self {
width,
height,