@@ -178,6 +178,16 @@ fn set_len(vm: &mut VirtualMachine, args: PyFuncArgs) -> PyResult {
178
178
Ok ( vm. context ( ) . new_int ( elements. len ( ) ) )
179
179
}
180
180
181
+ fn set_copy ( vm : & mut VirtualMachine , args : PyFuncArgs ) -> PyResult {
182
+ trace ! ( "set.copy called with: {:?}" , args) ;
183
+ arg_check ! ( vm, args, required = [ ( s, Some ( vm. ctx. set_type( ) ) ) ] ) ;
184
+ let elements = get_elements ( s) ;
185
+ Ok ( PyObject :: new (
186
+ PyObjectPayload :: Set { elements } ,
187
+ vm. ctx . set_type ( ) ,
188
+ ) )
189
+ }
190
+
181
191
fn set_repr ( vm : & mut VirtualMachine , args : PyFuncArgs ) -> PyResult {
182
192
arg_check ! ( vm, args, required = [ ( o, Some ( vm. ctx. set_type( ) ) ) ] ) ;
183
193
@@ -477,6 +487,7 @@ pub fn init(context: &PyContext) {
477
487
context. set_attr ( & set_type, "remove" , context. new_rustfunc ( set_remove) ) ;
478
488
context. set_attr ( & set_type, "discard" , context. new_rustfunc ( set_discard) ) ;
479
489
context. set_attr ( & set_type, "clear" , context. new_rustfunc ( set_clear) ) ;
490
+ context. set_attr ( & set_type, "copy" , context. new_rustfunc ( set_copy) ) ;
480
491
481
492
let frozenset_type = & context. frozenset_type ;
482
493
0 commit comments