pub struct FixedNamedArgs<const N: usize> { /* private fields */ }Expand description
A const-generic, stack-allocated array of named kernel arguments.
FixedNamedArgs<N> stores exactly N NamedArgEntry values on
the stack — zero heap allocation, zero indirection overhead compared
to a plain positional tuple.
§Invariants
Every pointed-to value must remain valid (not moved or dropped) until after the kernel launch that consumes this struct completes.
§Example
use oxicuda_launch::named_args::{FixedNamedArgs, NamedArgEntry};
let n: u32 = 1024;
let alpha: f32 = 2.0;
let args = FixedNamedArgs::new([
NamedArgEntry { name: "n", ptr: &n as *const u32 as *const std::ffi::c_void },
NamedArgEntry { name: "alpha", ptr: &alpha as *const f32 as *const std::ffi::c_void },
]);
assert_eq!(args.len(), 2);
assert_eq!(args.names()[0], "n");
assert_eq!(args.names()[1], "alpha");Implementations§
Source§impl<const N: usize> FixedNamedArgs<N>
impl<const N: usize> FixedNamedArgs<N>
Sourcepub const fn new(entries: [NamedArgEntry; N]) -> Self
pub const fn new(entries: [NamedArgEntry; N]) -> Self
Creates a new FixedNamedArgs from an array of NamedArgEntry values.
Sourcepub fn as_ptr_array(&self) -> [*mut c_void; N]
pub fn as_ptr_array(&self) -> [*mut c_void; N]
Returns a mutable array of *mut c_void pointers suitable for
passing directly to cuLaunchKernel as the kernelParams array.
§Safety
The returned pointers are valid only as long as the original values that were passed when constructing the entries remain in scope.
Sourcepub fn entries(&self) -> &[NamedArgEntry; N]
pub fn entries(&self) -> &[NamedArgEntry; N]
Returns an immutable slice over the entries for inspection.
Trait Implementations§
Auto Trait Implementations§
impl<const N: usize> Freeze for FixedNamedArgs<N>
impl<const N: usize> RefUnwindSafe for FixedNamedArgs<N>
impl<const N: usize> Send for FixedNamedArgs<N>
impl<const N: usize> Sync for FixedNamedArgs<N>
impl<const N: usize> Unpin for FixedNamedArgs<N>
impl<const N: usize> UnsafeUnpin for FixedNamedArgs<N>
impl<const N: usize> UnwindSafe for FixedNamedArgs<N>
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more