when is maybeuninit not a bad idea?

This commit is contained in:
galister
2025-12-26 00:23:45 +09:00
parent 99a2dcdd55
commit b1fba81e08

View File

@@ -572,14 +572,11 @@ pub struct SurfaceBufWithImage {
impl SurfaceBufWithImage { impl SurfaceBufWithImage {
#[allow(invalid_value)] #[allow(invalid_value)]
fn apply_to_surface(self, surface_data: &SurfaceData) { fn apply_to_surface(self, surface_data: &SurfaceData) {
let container = surface_data.data_map.get_or_insert(|| unsafe { if let Some(container) = surface_data.data_map.get::<SurfaceBufWithImageContainer>() {
SurfaceBufWithImageContainer {
// safe because we're replacing right after
inner: RefCell::new(MaybeUninit::uninit().assume_init()),
}
});
container.inner.replace(self); container.inner.replace(self);
} else {
surface_data.data_map.insert_if_missing(|| self);
}
} }
pub fn get_from_surface(surface_data: &SurfaceData) -> Option<Self> { pub fn get_from_surface(surface_data: &SurfaceData) -> Option<Self> {