pub enum IterNextOutput<T, U> {
Yield(T),
Return(U),
}
👎Deprecated since 0.21.0: Use
Option
or PyStopIteration
instead.Expand description
Output of __next__
which can either yield
the next value in the iteration, or
return
a value to raise StopIteration
in Python.
Usage example:
use pyo3::prelude::*;
use pyo3::iter::IterNextOutput;
#[pyclass]
struct PyClassIter {
count: usize,
}
#[pymethods]
impl PyClassIter {
#[new]
pub fn new() -> Self {
PyClassIter { count: 0 }
}
fn __next__(&mut self) -> IterNextOutput<usize, &'static str> {
if self.count < 5 {
self.count += 1;
// Given an instance `counter`, First five `next(counter)` calls yield 1, 2, 3, 4, 5.
IterNextOutput::Yield(self.count)
} else {
// At the sixth time, we get a `StopIteration` with `'Ended'`.
// try:
// next(counter)
// except StopIteration as e:
// assert e.value == 'Ended'
IterNextOutput::Return("Ended")
}
}
}
Variants§
Yield(T)
👎Deprecated since 0.21.0: Use
Option
or PyStopIteration
instead.The value yielded by the iterator.
Return(U)
👎Deprecated since 0.21.0: Use
Option
or PyStopIteration
instead.The StopIteration
object.
Auto Trait Implementations§
impl<T, U> Freeze for IterNextOutput<T, U>
impl<T, U> RefUnwindSafe for IterNextOutput<T, U>where
T: RefUnwindSafe,
U: RefUnwindSafe,
impl<T, U> Send for IterNextOutput<T, U>
impl<T, U> Sync for IterNextOutput<T, U>
impl<T, U> Unpin for IterNextOutput<T, U>
impl<T, U> UnwindSafe for IterNextOutput<T, U>where
T: UnwindSafe,
U: UnwindSafe,
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more