human readable PyIterIter::next

This commit is contained in:
Jeong YunWon
2023-03-18 22:43:32 +09:00
parent 12c96d06e4
commit de481bcd67

View File

@@ -234,11 +234,14 @@ where
type Item = PyResult<T>;
fn next(&mut self) -> Option<Self::Item> {
let obj = PyIter::new(self.obj.borrow())
.next(self.vm)
.map(|iret| iret.into_result().ok())
.transpose()?;
Some(obj.and_then(|obj| T::try_from_object(self.vm, obj)))
let imp = |next: PyResult<PyIterReturn>| -> PyResult<Option<T>> {
let Some(obj) = next?.into_result().ok() else {
return Ok(None);
};
Ok(Some(T::try_from_object(self.vm, obj)?))
};
let next = PyIter::new(self.obj.borrow()).next(self.vm);
imp(next).transpose()
}
#[inline]