我想在 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 中拥有一个自有切片。 如果可能的话,我也不希望有依赖关系。
Arc<[T]>
已经实现了From<Vec<T>>
所以你要问的很简单:
let arc_object: Arc<[u8]> = data.into();
您不需要单独的
usize
字段来存储长度,因为切片已经知道它们的长度 (arc_object.len()
)。