Struct flipdot_core::Data
source · pub struct Data<'a>(/* private fields */);
Expand description
Owned or borrowed data to be placed in a Frame
.
Since the data length in the Frame
will be represented as a single byte,
that length cannot exceed 255 (0xFF
). Data
is responsible for maintaining
this invariant.
§Examples
use flipdot_core::{Address, Data, Frame, MsgType};
let data = Data::try_new(vec![1, 2, 3])?; // Ok since length under 255
let frame = Frame::new(Address(2), MsgType(1), data);
Implementations§
source§impl<'a> Data<'a>
impl<'a> Data<'a>
sourcepub fn try_new<T: Into<Cow<'a, [u8]>>>(data: T) -> Result<Self, FrameError>
pub fn try_new<T: Into<Cow<'a, [u8]>>>(data: T) -> Result<Self, FrameError>
Creates a new Data
containing owned or borrowed data.
Since the data length in the Frame
will be represented as a single byte,
that length cannot exceed 255 (0xFF
).
§Errors
Returns FrameError::DataTooLong
if the data length is greater than 255 (0xFF
).
§Examples
use flipdot_core::Data;
let data = Data::try_new(vec![1, 2, 3])?;
assert_eq!(vec![1, 2, 3], data.get().as_ref());
Borrowed data can also be used:
let bytes = vec![1, 2, 3];
let data = Data::try_new(&bytes)?;
assert_eq!(vec![1, 2, 3], data.get().as_ref());
This will fail since the passed-in vector is too large:
let result = Data::try_new(vec![0; 1000]);
assert!(result.is_err());
Trait Implementations§
source§impl<'a> PartialEq for Data<'a>
impl<'a> PartialEq for Data<'a>
impl<'a> Eq for Data<'a>
impl<'a> StructuralPartialEq for Data<'a>
Auto Trait Implementations§
impl<'a> RefUnwindSafe for Data<'a>
impl<'a> Send for Data<'a>
impl<'a> Sync for Data<'a>
impl<'a> Unpin for Data<'a>
impl<'a> UnwindSafe for Data<'a>
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