我正在实现一个结构体,它持有对状态集合的引用,并能够以循环方式遍历该引用。
жһ„йҖ еҮҪж•°е’Ң`tick`ж–№жі•йғҪжҢүз…§йў„жңҹе·ҘдҪңгҖӮдҪҶжҳҜжҲ‘д№ҹжғідёәиҝҷдёӘз»“жһ„дҪ“е®һзҺ°`Clone`гҖӮиҝҷе°ұжҳҜжҲ‘иҝ·еӨұзҡ„ең°ж–№пјҡ
似乎我无法在编译时不知道的情况下创建一个新的
struct Pawn {
_state: Box<dyn Iterator<Item = u8>>,
}
impl Pawn {
const ALL_STATES: [u8; 10] = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10];
fn new() -> Self {
Pawn { _state: Box::new(Self::ALL_STATES.into_iter().cycle()) }
}
fn tick(&mut self, steps: usize) -> u8 {
(0..steps - 1).for_each(|_| {self._state.next();});
self._state.next().unwrap()
}
}
impl Clone for Pawn {
fn clone(&self) -> Self {
Self { _state: Box::new(*self._state.as_ref().clone()) }
}
}
жһ„йҖ еҮҪж•°е’Ң`tick`ж–№жі•йғҪжҢүз…§йў„жңҹе·ҘдҪңгҖӮдҪҶжҳҜжҲ‘д№ҹжғідёәиҝҷдёӘз»“жһ„дҪ“е®һзҺ°`Clone`гҖӮиҝҷе°ұжҳҜжҲ‘иҝ·еӨұзҡ„ең°ж–№пјҡ
the size for values of type `dyn Iterator<Item = u8>` cannot be known at compilation time
the trait `Sized` is not implemented for `dyn Iterator<Item = u8>`
似乎我无法在编译时不知道的情况下创建一个新的
Box
,这是由于动态分派造成的。我知道它将始终指向一个u8
的迭代器,但我不知道如何告诉编译器。
u8
的迭代器,为什么_state
不是一个Iterator<Item = u8>
呢? - mkrieger1u8
的迭代器,为什么_state
不是一个Iterator<Item = u8>
呢? - mkrieger1u8
的迭代器,为什么_state
不是一个Iterator<Item = u8>
呢? - undefined