@@ -21,8 +21,7 @@ use super::pyobject::{
2121use super :: stdlib:: io:: io_open;
2222
2323use super :: vm:: VirtualMachine ;
24- use num_bigint:: ToBigInt ;
25- use num_traits:: { Signed , ToPrimitive , Zero } ;
24+ use num_traits:: { Signed , ToPrimitive } ;
2625
2726fn get_locals ( vm : & mut VirtualMachine ) -> PyObjectRef {
2827 let d = vm. new_dict ( ) ;
@@ -180,29 +179,6 @@ fn builtin_divmod(vm: &mut VirtualMachine, args: PyFuncArgs) -> PyResult {
180179 }
181180}
182181
183- fn builtin_enumerate ( vm : & mut VirtualMachine , args : PyFuncArgs ) -> PyResult {
184- arg_check ! (
185- vm,
186- args,
187- required = [ ( iterable, None ) ] ,
188- optional = [ ( start, None ) ]
189- ) ;
190- let items = vm. extract_elements ( iterable) ?;
191- let start = if let Some ( start) = start {
192- objint:: get_value ( start)
193- } else {
194- Zero :: zero ( )
195- } ;
196- let mut new_items = vec ! [ ] ;
197- for ( i, item) in items. into_iter ( ) . enumerate ( ) {
198- let element = vm
199- . ctx
200- . new_tuple ( vec ! [ vm. ctx. new_int( i. to_bigint( ) . unwrap( ) + & start) , item] ) ;
201- new_items. push ( element) ;
202- }
203- Ok ( vm. ctx . new_list ( new_items) )
204- }
205-
206182/// Implements `eval`.
207183/// See also: https://docs.python.org/3/library/functions.html#eval
208184fn builtin_eval ( vm : & mut VirtualMachine , args : PyFuncArgs ) -> PyResult {
@@ -641,32 +617,6 @@ fn builtin_sum(vm: &mut VirtualMachine, args: PyFuncArgs) -> PyResult {
641617}
642618
643619// builtin_vars
644-
645- fn builtin_zip ( vm : & mut VirtualMachine , args : PyFuncArgs ) -> PyResult {
646- no_kwargs ! ( vm, args) ;
647-
648- // TODO: process one element at a time from iterators.
649- let mut iterables = vec ! [ ] ;
650- for iterable in args. args . iter ( ) {
651- let iterable = vm. extract_elements ( iterable) ?;
652- iterables. push ( iterable) ;
653- }
654-
655- let minsize: usize = iterables. iter ( ) . map ( |i| i. len ( ) ) . min ( ) . unwrap_or ( 0 ) ;
656-
657- let mut new_items = vec ! [ ] ;
658- for i in 0 ..minsize {
659- let items = iterables
660- . iter ( )
661- . map ( |iterable| iterable[ i] . clone ( ) )
662- . collect ( ) ;
663- let element = vm. ctx . new_tuple ( items) ;
664- new_items. push ( element) ;
665- }
666-
667- Ok ( vm. ctx . new_list ( new_items) )
668- }
669-
670620// builtin___import__
671621
672622pub fn make_module ( ctx : & PyContext ) -> PyObjectRef {
@@ -692,7 +642,7 @@ pub fn make_module(ctx: &PyContext) -> PyObjectRef {
692642 ctx. set_attr ( & py_mod, "dict" , ctx. dict_type ( ) ) ;
693643 ctx. set_attr ( & py_mod, "divmod" , ctx. new_rustfunc ( builtin_divmod) ) ;
694644 ctx. set_attr ( & py_mod, "dir" , ctx. new_rustfunc ( builtin_dir) ) ;
695- ctx. set_attr ( & py_mod, "enumerate" , ctx. new_rustfunc ( builtin_enumerate ) ) ;
645+ ctx. set_attr ( & py_mod, "enumerate" , ctx. enumerate_type ( ) ) ;
696646 ctx. set_attr ( & py_mod, "eval" , ctx. new_rustfunc ( builtin_eval) ) ;
697647 ctx. set_attr ( & py_mod, "exec" , ctx. new_rustfunc ( builtin_exec) ) ;
698648 ctx. set_attr ( & py_mod, "float" , ctx. float_type ( ) ) ;
@@ -733,7 +683,7 @@ pub fn make_module(ctx: &PyContext) -> PyObjectRef {
733683 ctx. set_attr ( & py_mod, "super" , ctx. super_type ( ) ) ;
734684 ctx. set_attr ( & py_mod, "tuple" , ctx. tuple_type ( ) ) ;
735685 ctx. set_attr ( & py_mod, "type" , ctx. type_type ( ) ) ;
736- ctx. set_attr ( & py_mod, "zip" , ctx. new_rustfunc ( builtin_zip ) ) ;
686+ ctx. set_attr ( & py_mod, "zip" , ctx. zip_type ( ) ) ;
737687
738688 // Exceptions:
739689 ctx. set_attr (
0 commit comments