add a leak method

This commit is contained in:
bendn 2023-10-27 12:32:04 +07:00
parent 7e1f99d0a2
commit 59bf636236
No known key found for this signature in database
GPG key ID: 0D9D3A2A3B2A93D6
2 changed files with 17 additions and 1 deletions

View file

@ -1,6 +1,6 @@
[package]
name = "fimg"
version = "0.4.17"
version = "0.4.19"
authors = ["bend-n <bend.n@outlook.com>"]
license = "MIT"
edition = "2021"

View file

@ -475,6 +475,22 @@ impl<const CHANNELS: usize> Image<Vec<u8>, CHANNELS> {
buffer: vec![0; CHANNELS * width as usize * height as usize],
}
}
/// Consumes and leaks this image, returning a reference to the image.
#[must_use = "not using the returned reference is a memory leak"]
pub fn leak(self) -> Image<&'static mut [u8], CHANNELS> {
// SAFETY: ctor
unsafe { Image::new(self.width, self.height, self.buffer.leak()) }
}
}
impl<const CHANNELS: usize, T: ?Sized> Image<Box<T>, CHANNELS> {
/// Consumes and leaks this image, returning a reference to the image.
#[must_use = "not using the returned reference is a memory leak"]
pub fn leak(self) -> Image<&'static mut T, CHANNELS> {
// SAFETY: ctor
unsafe { Image::new(self.width, self.height, Box::leak(self.buffer)) }
}
}
/// helper macro for defining the save() method.