From 9da1062f8269461c428de8081984e161dfc9a32d Mon Sep 17 00:00:00 2001 From: Wolfgang Bumiller Date: Mon, 22 Nov 2021 09:05:13 +0100 Subject: [PATCH] add Mmap::assume_init to convert Mmap> to Mmap Signed-off-by: Wolfgang Bumiller --- proxmox/src/tools/mmap.rs | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/proxmox/src/tools/mmap.rs b/proxmox/src/tools/mmap.rs index c77afb25..1ed84d1f 100644 --- a/proxmox/src/tools/mmap.rs +++ b/proxmox/src/tools/mmap.rs @@ -1,6 +1,7 @@ //! Memory mapping helpers. use std::convert::TryFrom; +use std::mem::MaybeUninit; use std::os::unix::io::RawFd; use std::{io, mem, ptr}; @@ -87,3 +88,20 @@ impl<'a, T> IntoIterator for &'a Mmap { <&'a [T] as IntoIterator>::into_iter(self) } } + +impl Mmap> { + /// Converts to `Mmap`. + /// + /// # Safety + /// + /// It is up to the caller to ensure this is safe, see + /// [`MaybeUninit::assume_init`](std::mem::MaybeUninit::assume_init). + pub unsafe fn assume_init(self) -> Mmap { + let out = Mmap { + data: self.data as *mut T, + len: self.len, + }; + std::mem::forget(self); + out + } +}