我找到了一个有关如何在Rust中实现PyIterProtocol的示例(链接)。
use pyo3::prelude::*;
use pyo3::PyIterProtocol;
use pyo3::class::iter::IterNextOutput;
#[pyclass]
struct Iter {
count: usize
}
#[pyproto]
impl PyIterProtocol for Iter {
fn __next__(mut slf: PyRefMut<Self>) -> IterNextOutput<usize, &'static str> {
if slf.count < 5 {
slf.count += 1;
IterNextOutput::Yield(slf.count)
} else {
IterNextOutput::Return("Ended")
}
}
}
但我无法想出如何实现一个容器类,它是可迭代的,但本身不是迭代器。基本上我想在Python中像这样分解我的对象
x, y, z = my_object