如何将多个不同长度的数组连接在一起?

Pur*_*s89 1 rust blockchain

我需要将多个不同大小的 u8 数组连接在一起,为区块链相关的东西创建一个块头,我尝试了 concat 方法,但只有在所有数组长度相同的情况下才有效。

pub struct Block{
    
    pub prev_block_hash: [u8;32],
    pub timestamp : [u8;8],
    pub difficuly : [u8;4], 
    pub block_height : [u8;4],
    pub nonce: [u8;4],
    pub version : [u8;4]

}
pub fn create_header(&self) -> [u8 ; 56]{
        let buffer :[ u8 ; 56] = [0;56];
        let buffer_as_vec  = [self.version, self.prev_block_hash,self.timestamp,self.difficuly,self.block_height,self.nonce].concat();

        buffer_as_vec.try_into().expect("Wrong size")
       
}
Run Code Online (Sandbox Code Playgroud)

Cha*_*man 6

您可以将数组转换为切片:

let buffer_as_vec = [
    self.version.as_slice(),
    self.prev_block_hash.as_slice(),
    self.timestamp.as_slice(),
    self.difficuly.as_slice(),
    self.block_height.as_slice(),
    self.nonce.as_slice(),
]
.concat();
Run Code Online (Sandbox Code Playgroud)

或者

let buffer_as_vec = [
    &self.version[..],
    &self.prev_block_hash[..],
    &self.timestamp[..],
    &self.difficuly[..],
    &self.block_height[..],
    &self.nonce[..],
]
.concat();
Run Code Online (Sandbox Code Playgroud)