这段代码存在错误:
let a: Vec<_> = (1..10).flat_map(|x| (1..x).map(|_| x)).collect();
错误信息:
error[E0597]: `x` does not live long enough
--> src/main.rs:2:57
|
2 | let a: Vec<_> = (1..10).flat_map(|x| (1..x).map(|_| x)).collect();
| --- ^- - borrowed value needs to live until here
| | ||
| | |borrowed value only lives until here
| | borrowed value does not live long enough
| capture occurs here
但为什么?
这是一种原始类型,即无论如何都应该进行克隆。
我哪里理解错了吗?
1..x, x..y, y..z
;当然我们可以用过滤器删除其余部分,但我认为这是错误的。 - Igor Chubinmove
非常完美)。问题是:为什么我应该借用或移动原始值,而不是简单地复制呢?我该如何强制执行? - Igor Chubinclone()
方法。 - Boiethios.clone()
? - Igor Chubin