从包含 str 的对象向量中获取 str 的数组切片
Get array slice of str from vector of objects containing str
我有一个 objects/instances 的向量(不确定 rust 的说法是什么),它有一个包含字符串切片的字段。我需要创建一个包含字符串切片字段的数组切片。以下是我的尝试。我试图让 foo_bars
与 what_i_want
相同。
struct Foo<'a> {
bar: &'a str,
}
let foos = vec![Foo { bar: "one" }, Foo { bar: "two" }, Foo { bar: "three" }];
let foo_bars: Vec<str> = foos.into_iter().map(|foo| foo.bar).collect();
let what_i_want = &["one", "two", "three"];
您在 Vec<&str>
中缺少 &
。
这是一个有效的playground。
struct Foo<'a> {
bar: &'a str,
}
fn main() {
let foos = vec![Foo { bar: "one" }, Foo { bar: "two" }, Foo { bar: "three" }];
let foo_bars: Vec<&str> = foos.into_iter().map(|foo| foo.bar).collect();
let what_i_want = &["one", "two", "three"];
println!("{:?}", foo_bars == what_i_want);
}
一切都必须有固定的大小,str
表示字符串中的字符范围,字符串切片的大小可以是非常大的。
您需要使用指针&
。指针是固定大小的 (usize
)。取决于 cpu 架构(32 或 64)位。
let foo_bars: Vec< str> = foos.into_iter().map(|foo| foo.bar).collect();
^ add a `&` here
我有一个 objects/instances 的向量(不确定 rust 的说法是什么),它有一个包含字符串切片的字段。我需要创建一个包含字符串切片字段的数组切片。以下是我的尝试。我试图让 foo_bars
与 what_i_want
相同。
struct Foo<'a> {
bar: &'a str,
}
let foos = vec![Foo { bar: "one" }, Foo { bar: "two" }, Foo { bar: "three" }];
let foo_bars: Vec<str> = foos.into_iter().map(|foo| foo.bar).collect();
let what_i_want = &["one", "two", "three"];
您在 Vec<&str>
中缺少 &
。
这是一个有效的playground。
struct Foo<'a> {
bar: &'a str,
}
fn main() {
let foos = vec![Foo { bar: "one" }, Foo { bar: "two" }, Foo { bar: "three" }];
let foo_bars: Vec<&str> = foos.into_iter().map(|foo| foo.bar).collect();
let what_i_want = &["one", "two", "three"];
println!("{:?}", foo_bars == what_i_want);
}
一切都必须有固定的大小,str
表示字符串中的字符范围,字符串切片的大小可以是非常大的。
您需要使用指针&
。指针是固定大小的 (usize
)。取决于 cpu 架构(32 或 64)位。
let foo_bars: Vec< str> = foos.into_iter().map(|foo| foo.bar).collect();
^ add a `&` here