【发布时间】:2015-12-10 20:19:17
【问题描述】:
Rust 提供了几种在用户定义的结构中存储元素集合的方法。可以为该结构指定一个自定义生命周期说明符,以及对切片的引用:
struct Foo<'a> {
elements: &'a [i32]
}
impl<'a> Foo<'a> {
fn new(elements: &'a [i32]) -> Foo<'a> {
Foo { elements: elements }
}
}
或者可以给它一个Vec对象:
struct Bar {
elements: Vec<i32>
}
impl Bar {
fn new(elements: Vec<i32>) -> Bar {
Bar { elements: elements }
}
}
这两种方法的主要区别是什么?
- 每当我调用
Bar::new(vec![1, 2, 3, 4, 5])时,是否会使用Vec强制语言复制内存? - 当所有者
Bar超出范围时,Vec的内容是否会被隐式销毁? - 如果在要传递到的结构之外使用通过引用传入切片,是否存在任何危险?
【问题讨论】: