Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/rust/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Rust 结构中的字符串,生存期_Rust - Fatal编程技术网

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
}

结构S2
S1
:这只允许您使用字符串文本,或使用具有
静态
(即,它们永远不能被释放)生存期的其他字符串

S2
:这允许您使用任意字符串片段,前提是它们具有可表达的生存期。例如,您不能从
迭代器
返回
S2
的动态实例,因为无法表示所涉及的生存期。这就是说,这允许您避免不必要的堆分配


S3
:最通用,因为它拥有自己的内容,但需要使用堆分配。

最常用的是哪一种?你有什么时候使用它们的例子吗?
S2
是最有效的,
S1
同样快,更容易推理,但限制性更大,
S3
是最慢的,但更容易推理。如果可以,请使用
S2
,如果必须,请使用
S1
/
S3
。如果你想要例子。。。只要找到处理锈迹代码的字符串并阅读即可。我想不出有什么东西是简短的,不是毫无意义的做作。