我需要将多个不同大小的 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)
您可以将数组转换为切片:
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)
| 归档时间: |
|
| 查看次数: |
634 次 |
| 最近记录: |