[PATCH v2 0/3] rust: const_eval: add a mechanism to do const trait calls
From: Gary Guo
Date: Thu Sep 03 2026 - 11:30:38 EST
Add a mechanism to perform const trait method calls, with the same type
inference capabilities. This would only work for concrete types (not inside
generic functions).
As an example, convert `as_char_ptr_in_const_context`, so instead of
kernel::str::as_char_ptr_in_const_context(c_str)
one may write
const_call!(c_str.as_char_ptr())
instead.
Signed-off-by: Gary Guo <gary@xxxxxxxxxxx>
---
Changes in v2:
- Split from `cv!()` alt series, and become a general infra instead.
- Link to v1: https://patch.msgid.link/20260828-cv-v1-0-694a695ff17f@xxxxxxxxxxx
---
Gary Guo (3):
rust: const_eval: add `#[const_eval_only]` attribute
rust: const_eval: allow const trait method invocation in some contexts
rust: str: convert `as_char_ptr` to work with `const_call!`
rust/build_error.rs | 7 +++
rust/kernel/configfs.rs | 2 +-
rust/kernel/const_eval.rs | 115 ++++++++++++++++++++++++++++++++++++++++++++++
rust/kernel/device_id.rs | 4 ++
rust/kernel/drm/device.rs | 4 +-
rust/kernel/drm/ioctl.rs | 4 +-
rust/kernel/kunit.rs | 6 +--
rust/kernel/lib.rs | 1 +
rust/kernel/miscdevice.rs | 2 +-
rust/kernel/net/phy.rs | 2 +-
rust/kernel/prelude.rs | 1 +
rust/kernel/str.rs | 15 +++---
rust/macros/const_eval.rs | 51 ++++++++++++++++++++
rust/macros/lib.rs | 39 ++++++++++++++++
rust/macros/module.rs | 4 +-
15 files changed, 237 insertions(+), 20 deletions(-)
---
base-commit: 89c07d98716a13454ec3fd9f97689e812cc71bd4
change-id: 20260828-cv-acaf3400d16c
Best regards,
--
Gary Guo <gary@xxxxxxxxxxx>