我知道这3个结构之间的区别是-一生的寿命 a
struct S1 {
a: &'static str,
b: int
}
struct S2<'aa> {
a: &'aa str,
b: int
}
struct S3 {
a: String,
b: int
}
fn main() {
let s1 = S1 {a: "123", b: 123};
let s2 = S2 {a: "123", b: 123};
let s3 = S2 {a: "123".into_owned(), b: 123};
}
Run Code Online (Sandbox Code Playgroud)
您能告诉我第一种,第二种和第三种的用例吗,换句话说,什么时候最好在第二种和第三种上使用第一种,什么时候在第一种和第三种上使用-第二种,等等?在文档中没有解释。
S1:这仅允许您使用字符串文字或具有static使用寿命(即永远无法释放)的其他字符串。
S2:这允许您使用任意字符串切片,只要它们具有可表示的生命周期。例如,您无法S2从返回动态实例Iterator,因为无法表达所涉及的生命周期。也就是说,这可以避免不必要的堆分配。
S3:最通用,因为它拥有其内容,但是需要使用堆分配才能使用。
| 归档时间: |
|
| 查看次数: |
414 次 |
| 最近记录: |