Rust 结构中的字符串,生存期
我知道这三种结构之间的区别是什么-一个Rust 结构中的字符串,生存期,rust,Rust,我知道这三种结构之间的区别是什么-一个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: 1
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};
}
struct S1{
答:&',
b:int
}
结构S2S1
:这只允许您使用字符串文本,或使用具有静态
(即,它们永远不能被释放)生存期的其他字符串
S2
:这允许您使用任意字符串片段,前提是它们具有可表达的生存期。例如,您不能从迭代器
返回S2
的动态实例,因为无法表示所涉及的生存期。这就是说,这允许您避免不必要的堆分配
S3
:最通用,因为它拥有自己的内容,但需要使用堆分配。最常用的是哪一种?你有什么时候使用它们的例子吗?S2
是最有效的,S1
同样快,更容易推理,但限制性更大,S3
是最慢的,但更容易推理。如果可以,请使用S2
,如果必须,请使用S1
/S3
。如果你想要例子。。。只要找到处理锈迹代码的字符串并阅读即可。我想不出有什么东西是简短的,不是毫无意义的做作。