| 894 | |
| 895 | #[pyfunction] |
| 896 | fn next( |
| 897 | iterator: PyObjectRef, |
| 898 | default_value: OptionalArg<PyObjectRef>, |
| 899 | vm: &VirtualMachine, |
| 900 | ) -> PyResult<PyIterReturn> { |
| 901 | if !PyIter::check(&iterator) { |
| 902 | return Err(vm.new_type_error(format!( |
| 903 | "{} object is not an iterator", |
| 904 | iterator.class().name() |
| 905 | ))); |
| 906 | } |
| 907 | PyIter::new(iterator) |
| 908 | .next(vm) |
| 909 | .map(|iter_ret| match iter_ret { |
| 910 | PyIterReturn::Return(obj) => PyIterReturn::Return(obj), |
| 911 | PyIterReturn::StopIteration(v) => { |
| 912 | default_value.map_or(PyIterReturn::StopIteration(v), PyIterReturn::Return) |
| 913 | } |
| 914 | }) |
| 915 | } |
| 916 | |
| 917 | #[pyfunction] |
| 918 | fn oct(number: ArgIndex, vm: &VirtualMachine) -> PyResult { |