【发布时间】:2023-01-14 08:41:46
【问题描述】:
我有一个接收 Iterator<Item=AsRef> 的函数,我想从这个迭代器中获取一个子字符串数组。问题是在映射时,.map() 获得了 AsRef 的所有权,而我无法返回 as_ref()。我怎样才能把这个迭代器变成像 Vec::iter 这样的引用迭代器?示例代码:
fn a(lines: impl Iterator<Item=impl AsRef<str>>) {
println!("{:?}", lines.map(|s| s.as_ref()).collect::<Vec<&str>>());
}
a(vec!["one".to_string(), "two".to_string()].iter());
我找到的一个解决方案是使用 for 循环并在循环主体中调用 as_ref 并创建一个引用数组,但我想使用 map 以函数式风格来完成它。
【问题讨论】:
-
我不确定您使用
for循环尝试了什么(您应该将其包含在您的问题中!),但是当我使用for循环翻译您的功能样式代码时,它也是 doesn't work。
标签: rust iterator borrow-checker