Messages in this thread Patch in this message | | | From | Boqun Feng <> | Subject | [PATCH] rust: types: Make Opaque::get const | Date | Mon, 1 Apr 2024 14:45:36 -0700 |
| |
To support a potential usage:
static foo: Opaque<Foo> = ..; // Or defined in an extern block.
...
fn bar() { let ptr = foo.get(); }
`Opaque::get` need to be `const`, otherwise compiler will complain because calls on statics are limited to const functions.
Also `Opaque::get` should be naturally `const` since it's a composition of two `const` functions: `UnsafeCell::get` and `ptr::cast`.
Signed-off-by: Boqun Feng <boqun.feng@gmail.com> --- rust/kernel/types.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/rust/kernel/types.rs b/rust/kernel/types.rs index 0949f9971074..25953c8f8acf 100644 --- a/rust/kernel/types.rs +++ b/rust/kernel/types.rs @@ -315,7 +315,7 @@ pub fn ffi_init(init_func: impl FnOnce(*mut T)) -> impl PinInit<Self> { } /// Returns a raw pointer to the opaque data. - pub fn get(&self) -> *mut T { + pub const fn get(&self) -> *mut T { UnsafeCell::get(&self.value).cast::<T>() } -- 2.44.0
| |