qemu-rust
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [PATCH 06/15] rust: cell: add wrapper for FFI types


From: Zhao Liu
Subject: Re: [PATCH 06/15] rust: cell: add wrapper for FFI types
Date: Tue, 25 Feb 2025 14:46:10 +0800

> +    /// Creates a new opaque object with zeroed contents.
> +    ///
> +    /// # Safety
> +    ///
> +    /// Ultimately the pointer to the returned value will be dereferenced
> +    /// in another unsafe block, for example when passing it to a C function.
> +    /// However, this function is unsafe to "force" documenting whether a
> +    /// zero value is safe.
> +    pub const unsafe fn zeroed() -> Self {
> +        Self {
> +            value: UnsafeCell::new(MaybeUninit::uninit()),

typo? MaybeUninit::zeroed()

> +            _pin: PhantomPinned,
> +        }
> +    }
> +
> +    /// Returns a raw pointer to the opaque data.

Maybe "a raw mutable pointer".

> +    pub const fn as_mut_ptr(&self) -> *mut T {
> +        UnsafeCell::get(&self.value).cast()
> +    }
> +
> +    /// Returns a raw pointer to the opaque data.
> +    pub const fn as_ptr(&self) -> *const T {
> +        self.as_mut_ptr() as *const _
> +    }
> +
> +    /// Returns a raw pointer to the opaque data.

What about "Returns a raw c_void type pointer"?

(Because the descriptions of these three helpers are exactly the same!
We can make them different.)
zeroed
> +    pub const fn as_void_ptr(&self) -> *mut std::ffi::c_void {
> +        UnsafeCell::get(&self.value).cast()
> +    }
> +}

The whole idea is great! With the nit of zeroed fixed,

Reviewed-by: Zhao Liu <zhao1.liu@intel.com>




reply via email to

[Prev in Thread] Current Thread [Next in Thread]