dbf7b233aa
3203: support ordering magic methods for `#[pyclass]` r=adamreichold a=davidhewitt Closes #2089 This adds `__lt__`, `__le__`, `__eq__`, `__ne__`, `__gt__`, and `__ge__` as per the Python implementations of what we call `__richcmp__`. There's a UI test confirming that the user cannot implement split forms and `__richcmp__` simultaneously. There's also a benchmark comparing implementing these split methods against using `__richcmp__`. I couldn't see a meaningful performance difference, so I'm tempted to deprecate `__richcmp__`, given that's not a magic method which exists in Python. Potentially we can provide options such as the opt-in `#[pyclass(eq, ord)]` to avoid boilerplate for people who don't want to implement six different methods. Co-authored-by: David Hewitt <1939362+davidhewitt@users.noreply.github.com> |
||
---|---|---|
.. | ||
not_msrv | ||
ui | ||
common.rs | ||
test_anyhow.rs | ||
test_append_to_inittab.rs | ||
test_arithmetics.rs | ||
test_buffer.rs | ||
test_buffer_protocol.rs | ||
test_bytes.rs | ||
test_class_attributes.rs | ||
test_class_basics.rs | ||
test_class_conversion.rs | ||
test_class_new.rs | ||
test_compile_error.rs | ||
test_datetime.rs | ||
test_default_impls.rs | ||
test_dict_iter.rs | ||
test_enum.rs | ||
test_exceptions.rs | ||
test_field_cfg.rs | ||
test_frompyobject.rs | ||
test_gc.rs | ||
test_getter_setter.rs | ||
test_inheritance.rs | ||
test_macros.rs | ||
test_mapping.rs | ||
test_methods.rs | ||
test_module.rs | ||
test_multiple_pymethods.rs | ||
test_no_imports.rs | ||
test_not_msrv.rs | ||
test_pep_587.rs | ||
test_proto_methods.rs | ||
test_pyfunction.rs | ||
test_pyself.rs | ||
test_sequence.rs | ||
test_serde.rs | ||
test_static_slots.rs | ||
test_string.rs | ||
test_super.rs | ||
test_text_signature.rs | ||
test_unsendable_dict.rs | ||
test_variable_arguments.rs | ||
test_variable_arguments_deprecated.rs | ||
test_various.rs | ||
test_wrap_pyfunction_deduction.rs |