乐闻世界logo
搜索文章和话题

如何将Vec<String>转换为Vec<&str>?

4 个月前提问
4 个月前修改
浏览次数25

1个答案

1

在Rust中,Vec<String>类型是一个包含多个String的向量,而Vec<&str>则是一个包含多个字符串切片的向量。要将Vec<String>转换成Vec<&str>,你需要创建一个新的向量,其中包含指向原始向量中每个String的引用。

这里是一个具体的例子来演示这个转换过程:

rust
fn main() { // 创建一个Vec<String> let vec_strings = vec![String::from("Hello"), String::from("world")]; // 转换Vec<String>到Vec<&str> let vec_strs: Vec<&str> = vec_strings.iter().map(AsRef::as_ref).collect(); // 输出转换后的结果 println!("{:?}", vec_strs); }

在这个例子中:

  1. vec_strings是一个Vec<String>,包含两个String元素。
  2. 使用.iter()方法来获取vec_strings的迭代器,这个迭代器会逐一产生Vec<String>中的元素的引用。
  3. 使用.map(AsRef::as_ref)来将每个String的引用转换为&str。这里AsRef::as_ref是一个通用的方法,可以将&String转换成&str
  4. 使用.collect()方法来从迭代器中收集元素,并将它们组合成一个新的Vec<&str>

这种转换是安全的,并且在Rust中常用于处理需要字符串切片而不是字符串对象的情况。

2024年8月7日 17:24 回复

你的答案