Arc 中的动态大小结构

问题描述 投票:0回答:1

我想在 Arc 中创建一个动态大小的结构元组,但我找不到方法来做到这一点。

这就是我想要实现的目标

struct UnknownSized(usize, [u8]);

fn main() {
    let attached_data: usize = 42;
    let data: Vec<u8> = vec![1, 2, 3, 4, 5]; 

    let arc_object = Arc::new(UnknownSized(attached_data, data)); // Did not work
}

我期望这个对象只有一个间接级别,而不是使用诸如围绕 [u8] 的盒子或围绕 [u8] 包裹另一个 Arc 之类的东西。也没有引用切片。我想要使用 usize 在 Arc 中拥有一个自有切片。 如果可能的话,我也不希望有依赖关系。

rust
1个回答
0
投票

Arc<[T]>
已经实现了
From<Vec<T>>
所以你要问的很简单:

let arc_object: Arc<[u8]> = data.into();

您不需要单独的

usize
字段来存储长度,因为切片已经知道它们的长度 (
arc_object.len()
)。

© www.soinside.com 2019 - 2024. All rights reserved.