<分区>
我正在尝试编写一个 Rust 结构。该结构拥有一个指向字符串的引用计数指针,还拥有一个指向同一字符串的字符串切片向量。
此外,我正在尝试编写一个函数来生成此结构。我不确定如何继续。
struct MyStruct<'a> {
rc_string: Rc<String>,
vec: Vec<&'a str>
}
fn build_my_struct<'a>(s: &Rc<String>) -> MyStruct<'a> {
let rc_string = s.clone();
let mut vec = Vec::new();
vec.push(&rc_string[0..2]);
MyStruct {
rc_string: rc_string,
vec: vec
}
}
error[E0515]: cannot return value referencing local variable `rc_string`
--> src/main.rs:13:5
|
11 | vec.push(&rc_string[0..2]);
| --------- `rc_string` is borrowed here
12 |
13 | / MyStruct {
14 | | rc_string: rc_string,
15 | | vec: vec
16 | | }
| |_____^ returns a value referencing data owned by the current function
我了解到vec
变量借用了rc_string
。编译器不喜欢返回 vec
,因为它借用了局部变量 rc_string
。
但是 rc_string
也被返回了吗?字符串切片在 MyStruct.rc_string
的生命周期内有效?