我已经阅读了以下链接,但当前的尝试仍然出现一些错误:
let data = &[37u8, 42u8];
let data_two = &[0x34u8, 0x32u8];
let res:Vec<u8> = [data, data_two].concat();
Run Code Online (Sandbox Code Playgroud)
另外,理想情况下我想避免串联,并将 u8 数组写入缓冲区,其中我保留前两个字节用于存储长度和索引,例如:
let nb:u8 = get_chunks_nb();
let index:u8 = get_chunk_index();
let header = &[nb, index];
// this kind of things in C:
memcpy(&buffer, header, 2);
memcpy(&buffer[2], chunk, chunk_len);
Run Code Online (Sandbox Code Playgroud)
感谢您的帮助!
我尝试了一下,但我不能 100% 确定为什么,我对 Rust 还很陌生。
看起来编译器将data和视为data_two数组,因此[data, data_two]是数组的数组而不是切片的数组。这可能就是为什么它找不到concat它的方法的原因。
通过明确地说数据是一个切片,一切似乎都已就位:
let data:&[u8] = &[37u8, 42u8];
let data_two = &[0x34u8, 0x32u8];
let mut res:Vec<u8> = [data, data_two].concat();
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
10994 次 |
| 最近记录: |