embedded_nrf24l01_async/
payload.rs

1use core::ops::Deref;
2
3/// Represents a received packet. Stores 32 bytes and the actual length.
4///
5/// Use [`as_ref()`](#method.as_ref) or [`Deref`](#impl-Deref) to
6/// obtain a slice of the content.
7pub struct Payload {
8    data: [u8; 32],
9    len: usize,
10}
11
12impl Payload {
13    /// Copy a slice
14    pub fn new(source: &[u8]) -> Self {
15        let mut data = [0; 32];
16        let len = source.len().min(data.len());
17        data[0..len].copy_from_slice(&source[0..len]);
18        Payload { data, len }
19    }
20
21    /// Read length
22    pub fn len(&self) -> usize {
23        self.len
24    }
25}
26
27impl AsRef<[u8]> for Payload {
28    fn as_ref(&self) -> &[u8] {
29        &self.data[0..self.len]
30    }
31}
32
33impl Deref for Payload {
34    type Target = [u8];
35    fn deref(&self) -> &[u8] {
36        &self.as_ref()
37    }
38}