fast image operations
add buf_unchecked 2
bendn 2025-02-03
parent 25f281d · commit 3dd76b4
-rw-r--r--src/builder.rs10
-rw-r--r--src/indexed/builder.rs2
2 files changed, 11 insertions, 1 deletions
diff --git a/src/builder.rs b/src/builder.rs
index c3e4164..ec0e518 100644
--- a/src/builder.rs
+++ b/src/builder.rs
@@ -48,6 +48,16 @@ impl<B, const C: usize> Builder<B, C> {
"invalid buffer size (expected {len}, got {})",
buffer.as_ref().len()
);
+ // SAFETY: checked!
+ unsafe { self.buf_unchecked(buffer) }
+ }
+ /// apply a buffer, and build (length unchecked)
+ #[track_caller]
+ #[must_use = "what is it going to do?"]
+ pub unsafe fn buf_unchecked<I>(self, buffer: B) -> Image<B, C>
+ where
+ B: AsRef<[I]>,
+ {
Image {
buffer,
width: self.width.try_into().expect("passed zero width to builder"),
diff --git a/src/indexed/builder.rs b/src/indexed/builder.rs
index e8b5ad1..faa38c7 100644
--- a/src/indexed/builder.rs
+++ b/src/indexed/builder.rs
@@ -62,7 +62,7 @@ impl<B, P> Builder<B, P> {
B: AsRef<[I]>,
{
Image {
- buffer: crate::Image::build(self.width, self.height).buf(buffer),
+ buffer: unsafe { crate::Image::build(self.width, self.height).buf_unchecked(buffer) },
palette: self.palette.expect("require palette"),
}
}