pub struct StringAsciiFixed<const LEN: usize, const PADDING: u8, const RIGHT_ALIGN: bool>(/* private fields */);Expand description
A string of ascii characters, padded with a constant byte, allocated on stack using [u8; LEN]
use ::byteserde_types::prelude::*;
// Takes [u8; 5] array, which `exact` capacity as [StringAsciiFixed], compile time check on capacity
let inp_str: StringAsciiFixed<5, 0x20, false> = b"ABCDE".into();
println!("{:x}", inp_str);
assert_eq!(inp_str.bytes(), [0x41, 0x42, 0x43, 0x44, 0x45]);
// Takes `only` 5 bytes no alignment effect or padding due capacity.
let inp_str: StringAsciiFixed<5, 0x20, false> = b"ABCDEFG".as_slice().into();
println!("{:x}", inp_str);
assert_eq!(inp_str.bytes(), [0x41, 0x42, 0x43, 0x44, 0x45]);
// Takes `only` 5 bytes no alignment effect or padding due capacity.
let inp_str: StringAsciiFixed<5, 0x20, true> = b"ABCDEFG".as_slice().into();
println!("{:x}", inp_str);
assert_eq!(inp_str.bytes(), [0x41, 0x42, 0x43, 0x44, 0x45]);
// Takes `all` 4 bytes and aligns to the LEFT, while padding with SPACE
let inp_str: StringAsciiFixed<5, 0x20, false> = b"ABCD".as_slice().into();
println!("{:x}", inp_str);
assert_eq!(inp_str.bytes(), [0x41, 0x42, 0x43, 0x44, 0x20]);
// Takes `all` 4 bytes and aligns to the RIGHT, while padding with SPACE
let inp_str: StringAsciiFixed<5, 0x20, true> = b"ABCD".as_slice().into();
println!("{:x}", inp_str);
assert_eq!(inp_str.bytes(), [0x20, 0x41, 0x42, 0x43, 0x44]);Implementations§
Trait Implementations§
Source§impl<const LEN: usize, const PADDING: u8, const RIGHT_ALIGN: bool> ByteDeserializeSlice<StringAsciiFixed<LEN, PADDING, RIGHT_ALIGN>> for StringAsciiFixed<LEN, PADDING, RIGHT_ALIGN>
impl<const LEN: usize, const PADDING: u8, const RIGHT_ALIGN: bool> ByteDeserializeSlice<StringAsciiFixed<LEN, PADDING, RIGHT_ALIGN>> for StringAsciiFixed<LEN, PADDING, RIGHT_ALIGN>
Source§fn byte_deserialize(
des: &mut ByteDeserializerSlice<'_>,
) -> Result<StringAsciiFixed<LEN, PADDING, RIGHT_ALIGN>>
fn byte_deserialize( des: &mut ByteDeserializerSlice<'_>, ) -> Result<StringAsciiFixed<LEN, PADDING, RIGHT_ALIGN>>
If successful returns a new instance of T type struct, depleting exactly the right amount of bytes from ByteDeserializerSlice
Number of bytes depleted is determined by the struct T itself and its member types.
Source§fn byte_deserialize_take(
des: &mut ByteDeserializerSlice<'_>,
len: usize,
) -> Result<T, SerDesError>
fn byte_deserialize_take( des: &mut ByteDeserializerSlice<'_>, len: usize, ) -> Result<T, SerDesError>
if successful returns a new instance of T type struct, however ONLY depleting a maximum of
len bytes from ByteDeserializerSlice
Intended for types with variable length such as Strings, Vec, etc.
No bytes will be depleted if attempt was not successful.Source§impl<const LEN: usize, const PADDING: u8, const RIGHT_ALIGN: bool> ByteSerializeHeap for StringAsciiFixed<LEN, PADDING, RIGHT_ALIGN>
impl<const LEN: usize, const PADDING: u8, const RIGHT_ALIGN: bool> ByteSerializeHeap for StringAsciiFixed<LEN, PADDING, RIGHT_ALIGN>
fn byte_serialize_heap(&self, ser: &mut ByteSerializerHeap) -> Result<()>
Source§impl<const LEN: usize, const PADDING: u8, const RIGHT_ALIGN: bool> ByteSerializeStack for StringAsciiFixed<LEN, PADDING, RIGHT_ALIGN>
impl<const LEN: usize, const PADDING: u8, const RIGHT_ALIGN: bool> ByteSerializeStack for StringAsciiFixed<LEN, PADDING, RIGHT_ALIGN>
fn byte_serialize_stack<const CAP: usize>( &self, ser: &mut ByteSerializerStack<CAP>, ) -> Result<()>
Source§impl<const LEN: usize, const PADDING: u8, const RIGHT_ALIGN: bool> ByteSerializedLenOf for StringAsciiFixed<LEN, PADDING, RIGHT_ALIGN>
impl<const LEN: usize, const PADDING: u8, const RIGHT_ALIGN: bool> ByteSerializedLenOf for StringAsciiFixed<LEN, PADDING, RIGHT_ALIGN>
Source§impl<const LEN: usize, const PADDING: u8, const RIGHT_ALIGN: bool> Clone for StringAsciiFixed<LEN, PADDING, RIGHT_ALIGN>
impl<const LEN: usize, const PADDING: u8, const RIGHT_ALIGN: bool> Clone for StringAsciiFixed<LEN, PADDING, RIGHT_ALIGN>
Source§fn clone(&self) -> StringAsciiFixed<LEN, PADDING, RIGHT_ALIGN>
fn clone(&self) -> StringAsciiFixed<LEN, PADDING, RIGHT_ALIGN>
Returns a duplicate of the value. Read more
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
Performs copy-assignment from
source. Read moreSource§impl<const LEN: usize, const PADDING: u8, const RIGHT_ALIGN: bool> Debug for StringAsciiFixed<LEN, PADDING, RIGHT_ALIGN>
impl<const LEN: usize, const PADDING: u8, const RIGHT_ALIGN: bool> Debug for StringAsciiFixed<LEN, PADDING, RIGHT_ALIGN>
Source§impl<const LEN: usize, const PADDING: u8, const RIGHT_ALIGN: bool> Default for StringAsciiFixed<LEN, PADDING, RIGHT_ALIGN>
impl<const LEN: usize, const PADDING: u8, const RIGHT_ALIGN: bool> Default for StringAsciiFixed<LEN, PADDING, RIGHT_ALIGN>
Source§impl<'de, const LEN: usize, const PADDING: u8, const RIGHT_ALIGN: bool> Deserialize<'de> for StringAsciiFixed<LEN, PADDING, RIGHT_ALIGN>
impl<'de, const LEN: usize, const PADDING: u8, const RIGHT_ALIGN: bool> Deserialize<'de> for StringAsciiFixed<LEN, PADDING, RIGHT_ALIGN>
Source§fn deserialize<D: Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error>
fn deserialize<D: Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error>
Deserialize this value from the given Serde deserializer. Read more
Source§impl<const LEN: usize, const PADDING: u8, const RIGHT_ALIGN: bool> Display for StringAsciiFixed<LEN, PADDING, RIGHT_ALIGN>
impl<const LEN: usize, const PADDING: u8, const RIGHT_ALIGN: bool> Display for StringAsciiFixed<LEN, PADDING, RIGHT_ALIGN>
Source§impl<const LEN: usize, const PADDING: u8, const RIGHT_ALIGN: bool> From<&[u8]> for StringAsciiFixed<LEN, PADDING, RIGHT_ALIGN>
impl<const LEN: usize, const PADDING: u8, const RIGHT_ALIGN: bool> From<&[u8]> for StringAsciiFixed<LEN, PADDING, RIGHT_ALIGN>
Source§impl<const LEN: usize, const PADDING: u8, const RIGHT_ALIGN: bool> From<&[u8; LEN]> for StringAsciiFixed<LEN, PADDING, RIGHT_ALIGN>
impl<const LEN: usize, const PADDING: u8, const RIGHT_ALIGN: bool> From<&[u8; LEN]> for StringAsciiFixed<LEN, PADDING, RIGHT_ALIGN>
Source§impl<const LEN: usize, const PADDING: u8, const RIGHT_ALIGN: bool> From<u16> for StringAsciiFixed<LEN, PADDING, RIGHT_ALIGN>
impl<const LEN: usize, const PADDING: u8, const RIGHT_ALIGN: bool> From<u16> for StringAsciiFixed<LEN, PADDING, RIGHT_ALIGN>
Source§impl<const LEN: usize, const PADDING: u8, const RIGHT_ALIGN: bool> From<u32> for StringAsciiFixed<LEN, PADDING, RIGHT_ALIGN>
impl<const LEN: usize, const PADDING: u8, const RIGHT_ALIGN: bool> From<u32> for StringAsciiFixed<LEN, PADDING, RIGHT_ALIGN>
Source§impl<const LEN: usize, const PADDING: u8, const RIGHT_ALIGN: bool> From<u64> for StringAsciiFixed<LEN, PADDING, RIGHT_ALIGN>
impl<const LEN: usize, const PADDING: u8, const RIGHT_ALIGN: bool> From<u64> for StringAsciiFixed<LEN, PADDING, RIGHT_ALIGN>
Source§impl<const LEN: usize, const PADDING: u8, const RIGHT_ALIGN: bool> LowerHex for StringAsciiFixed<LEN, PADDING, RIGHT_ALIGN>
impl<const LEN: usize, const PADDING: u8, const RIGHT_ALIGN: bool> LowerHex for StringAsciiFixed<LEN, PADDING, RIGHT_ALIGN>
Source§impl<const LEN: usize, const PADDING: u8, const RIGHT_ALIGN: bool> PartialEq for StringAsciiFixed<LEN, PADDING, RIGHT_ALIGN>
impl<const LEN: usize, const PADDING: u8, const RIGHT_ALIGN: bool> PartialEq for StringAsciiFixed<LEN, PADDING, RIGHT_ALIGN>
Source§fn eq(&self, other: &StringAsciiFixed<LEN, PADDING, RIGHT_ALIGN>) -> bool
fn eq(&self, other: &StringAsciiFixed<LEN, PADDING, RIGHT_ALIGN>) -> bool
Tests for
self and other values to be equal, and is used by ==.Source§impl<const LEN: usize, const PADDING: u8, const RIGHT_ALIGN: bool> Serialize for StringAsciiFixed<LEN, PADDING, RIGHT_ALIGN>
impl<const LEN: usize, const PADDING: u8, const RIGHT_ALIGN: bool> Serialize for StringAsciiFixed<LEN, PADDING, RIGHT_ALIGN>
impl<const LEN: usize, const PADDING: u8, const RIGHT_ALIGN: bool> StructuralPartialEq for StringAsciiFixed<LEN, PADDING, RIGHT_ALIGN>
Auto Trait Implementations§
impl<const LEN: usize, const PADDING: u8, const RIGHT_ALIGN: bool> Freeze for StringAsciiFixed<LEN, PADDING, RIGHT_ALIGN>
impl<const LEN: usize, const PADDING: u8, const RIGHT_ALIGN: bool> RefUnwindSafe for StringAsciiFixed<LEN, PADDING, RIGHT_ALIGN>
impl<const LEN: usize, const PADDING: u8, const RIGHT_ALIGN: bool> Send for StringAsciiFixed<LEN, PADDING, RIGHT_ALIGN>
impl<const LEN: usize, const PADDING: u8, const RIGHT_ALIGN: bool> Sync for StringAsciiFixed<LEN, PADDING, RIGHT_ALIGN>
impl<const LEN: usize, const PADDING: u8, const RIGHT_ALIGN: bool> Unpin for StringAsciiFixed<LEN, PADDING, RIGHT_ALIGN>
impl<const LEN: usize, const PADDING: u8, const RIGHT_ALIGN: bool> UnwindSafe for StringAsciiFixed<LEN, PADDING, RIGHT_ALIGN>
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