pub trait Iterable: PyPayload {
// Required method
fn iter(zelf: PyRef<Self>, vm: &VirtualMachine) -> PyResult;
// Provided methods
fn slot_iter(zelf: PyObjectRef, vm: &VirtualMachine) -> PyResult { ... }
fn __iter__(zelf: PyObjectRef, vm: &VirtualMachine) -> PyResult { ... }
fn extend_slots(_slots: &mut PyTypeSlots) { ... }
fn __extend_method_def(method_defs: &mut Vec<PyMethodDef>) { ... }
fn __extend_py_class(ctx: &Context, class: &'static Py<PyType>) { ... }
fn __extend_slots(slots: &mut PyTypeSlots) { ... }
}