Struct array_init_cursor::Cursor [−][src]
pub struct Cursor<'a, T, const N: usize> { /* fields omitted */ }
Expand description
A fixed-size cursor for initializing MaybeUninit
arrays
The cursor will guarantee that all values have been
initialized when the value is dropped, which means
that it is safe to call MaybeUninit::assume_init()
.
NOTE: This guarantee only holds as long as Drop::drop()
is called.
If the value goes out of scope without drop being called (e.g. because
of core::mem::forget()
), then this guarantee no longer applies.
Implementations
Creates a new cursor.
Finishes the buffer by writing the remaining values.
This is equivalent to calling self.write::<N, 0>(value)
, except it is slightly
more ergonomic.
Writes L
values to the buffer and returns a new cursor for the remaining R
values.
This function cannot compile unless L + R == N
, however it will be able to pass through
cargo check
, since the error is not discovered by rustc
until it tries to instantiate
the code.
Splits the cursor in two.
This function cannot compile unless L + R == N
, however it will be able to pass through
cargo check
, since the error is not discovered by rustc
until it tries to instantiate
the code.
Compile-time assertion that N == M
to work-around limitations in rust generics.
This is useful if a type-signature requires the function to have a generic size argument, but you want compile-time errors when called with the wrong parameter.
Examples
fn example<const N: usize>(cursor: array_init_cursor::Cursor<'_, u8, N>) {
let cursor: array_init_cursor::Cursor<u8, 10> = cursor.assert_size();
}