我尝试编写与此类似的代码:
fn main() {
let i = ['a', 'b'];
let qux = i.iter().flat_map(|&foo| {
let bar = [foo, 'c'];
(0usize..42).map(|ii| {
bar.iter() /*.map(some_function)*/ .collect::<String>()
})
}).min();
}
这不起作用,因为bar
的活动时间不够长,而且我还没有找到借用检查员不会抱怨的任何解决方案。有没有机会以功能风格做这种事情?
另外,flat_map
为什么必须移动或复制值?我想,如果我能做到的话
let qux = i.iter().map(|&foo| [foo, 'c']).flat_map(|&bar| {
/* ... */
}).min();
它能够确保bar
的寿命足够长。