@@ -152,6 +152,13 @@ fn set_len(vm: &mut VirtualMachine, args: PyFuncArgs) -> PyResult {
152152 Ok ( vm. context ( ) . new_int ( elements. len ( ) ) )
153153}
154154
155+ fn set_copy ( vm : & mut VirtualMachine , args : PyFuncArgs ) -> PyResult {
156+ trace ! ( "set.copy called with: {:?}" , args) ;
157+ arg_check ! ( vm, args, required = [ ( s, Some ( vm. ctx. set_type( ) ) ) ] ) ;
158+ let elements = get_elements ( s) ;
159+ Ok ( PyObject :: new ( PyObjectPayload :: Set { elements } , vm. ctx . set_type ( ) ) )
160+ }
161+
155162fn set_repr ( vm : & mut VirtualMachine , args : PyFuncArgs ) -> PyResult {
156163 arg_check ! ( vm, args, required = [ ( o, Some ( vm. ctx. set_type( ) ) ) ] ) ;
157164
@@ -450,6 +457,7 @@ pub fn init(context: &PyContext) {
450457 context. set_attr ( & set_type, "add" , context. new_rustfunc ( set_add) ) ;
451458 context. set_attr ( & set_type, "remove" , context. new_rustfunc ( set_remove) ) ;
452459 context. set_attr ( & set_type, "clear" , context. new_rustfunc ( set_clear) ) ;
460+ context. set_attr ( & set_type, "copy" , context. new_rustfunc ( set_copy) ) ;
453461
454462 let frozenset_type = & context. frozenset_type ;
455463
0 commit comments