cands_presentation/cyphal/digitalservo/
string.rs1const STRQTY_SIZE: usize = 1;
2
3#[derive(Debug)]
4pub struct Str {
5 pub value: String
6}
7
8impl Str {
9 pub fn serialize(value: &str) -> Vec<u8> {
10
11 let str_size: usize = value.len();
13
14 let buffer_size: usize = STRQTY_SIZE + str_size;
17 let mut buffer: Vec<u8> = Vec::with_capacity(buffer_size);
18
19 let str_qty: u8 = str_size as u8;
20 buffer.push(str_qty);
21
22 let str_buffer: Vec<u8> = value.as_bytes().to_vec();
23 buffer.extend(str_buffer);
24
25 buffer
26 }
27
28
29 pub fn deserialize(bytearray: &[u8]) -> Result<Str, Box<dyn std::error::Error>>{
30
31 let str_qty: usize = bytearray[0] as usize;
32
33 let str_tail_pos: usize = STRQTY_SIZE + str_qty;
36 let string: String = String::from_utf8_lossy(&bytearray[STRQTY_SIZE..str_tail_pos]).to_string();
37
38 Ok( Str { value: string } )
39 }
40}