Macro rkyv::project_tuple[][src]

macro_rules! project_tuple {
    ($tuple:ident: $ty:ty => $index:tt) => { ... };
    ($tuple:ident: $tuple_ty:ty => $index:tt: $index_ty:path) => { ... };
}
Expand description

Maps a mutable MaybeUninit tuple reference to a mutable MaybeUninit index reference.

This is primarily used to succintly resolve the fields of tuples into the output for resolve().

Example

use rkyv::project_tuple;
use core::mem::MaybeUninit;

let result = unsafe {
    let mut result = MaybeUninit::<(i32, u8)>::uninit();
    let out = &mut result;
    project_tuple!(out: (i32, u8) => 0: i32).as_mut_ptr().write(42);
    project_tuple!(out: (i32, u8) => 1: u8).as_mut_ptr().write(10);
    result.assume_init()
};

assert_eq!(result.0, 42);
assert_eq!(result.1, 10);