【发布时间】:2015-05-17 21:38:14
【问题描述】:
我有一个结构,它通过方法 next 来自 trait Iterator 给出数字:
struct Numbers{
number: usize,
count: usize
}
impl Iterator for Numbers {
type Item = usize;
fn next(&mut self) -> Option<Self::Item> {
if self.count > 0 {
self.count -= 1;
return Some(self.number);
}
return None;
}
}
fn main(){
let numbers = Numbers{
number: 777,
count: 10
};
for n in numbers {
println!{"{:?}", n};
}
}
它适用于usize 类型。
但是 Box 类型的相同代码给出了编译错误:
struct Numbers{
number: Box<usize>,
count: usize
}
impl Iterator for Numbers {
type Item = Box<usize>;
fn next(&mut self) -> Option<Self::Item> {
if self.count > 0 {
self.count -= 1;
return Some(self.number);
}
return None;
}
}
fn main(){
let numbers = Numbers{
number: Box::new(777),
count: 10
};
for n in numbers {
println!{"{:?}", n};
}
}
./numbers.rs:12:25: 12:29 错误:无法移出借来的内容
./numbers.rs:12 return Some(self.number);
如何正确实现装箱值的迭代器?
【问题讨论】:
标签: rust