pub trait FlexibleArray<S> {
    // Required methods
    fn set_len(&mut self, len: usize);
    fn get_len(&self) -> usize;
    unsafe fn get_slice(&self, len: usize) -> &[S];
    unsafe fn get_mut_slice(&mut self, len: usize) -> &mut [S];
}
Expand description

The following code provides generic helpers for creating and accessing flexible array structs. A complete definition of flexible array structs is found in the ISO 9899 specification http://www.iso-9899.info/n1570.html. A flexible array struct is of the form:

#[repr(C)]
struct T {
   some_data: u32,
   nents: u32,
   entries: __IncompleteArrayField<S>,
}

where:

  • T is the flexible array struct type
  • S is the flexible array type
  • nents is the flexible array length
  • entries is the flexible array member

These structures are used by the kernel API. A collection of methods that are required by the FlexibleArrayWrapper type.

When implemented for T, this trait allows the caller to set number of S entries and retrieve a slice of S entries. Trait methods must only be called by the FlexibleArrayWrapper type. Don’t implement this trait directly, use the flexible_array! macro to avoid duplication.

Required Methods§

source

fn set_len(&mut self, len: usize)

Implementations must set flexible array length in the flexible array struct to the value specified by len. Appropriate conversions (i.e, usize to u32) are allowed so long as they don’t overflow or underflow.

source

fn get_len(&self) -> usize

Implementations must return the length of the flexible array member. Appropriate conversions (i.e, usize to u32) are allowed so long as they don’t overflow or underflow.

source

unsafe fn get_slice(&self, len: usize) -> &[S]

Implementations must return a slice of flexible array member of length len.

§Safety

Do not use this function directly, as the FlexibleArrayWrapper will guarantee safety.

source

unsafe fn get_mut_slice(&mut self, len: usize) -> &mut [S]

Implementations must return a mutable slice of flexible array member of length len.

§Safety

Do not use this function directly, as the FlexibleArrayWrapper will guarantee safety.

Implementors§