bevy/crates
Vic b78efd339d
Simplify sort/max_by calls (#17048)
# Objective

Some sort calls and `Ord` impls are unnecessarily complex.

## Solution

Rewrite the "match on cmp, if equal do another cmp" as either a
comparison on tuples, or `Ordering::then_with`, depending on whether the
compare keys need construction.

`sort_by` -> `sort_by_key` when symmetrical. Do the same for
`min_by`/`max_by`.

Note that `total_cmp` can only work with `sort_by`, and not on tuples.

When sorting collected query results that contain
`Entity`/`MainEntity`/`RenderEntity` in their `QueryData`, with that
`Entity` in the sort key:
stable -> unstable sort (all queried entities are unique)

If key construction is not simple, switch to `sort_by_cached_key` when
possible.

Sorts that are only performed to discover the maximal element are
replaced by `max_by_key`.

Dedicated comparison functions and structs are removed where simple.

Derive `PartialOrd`/`Ord` when useful.

Misc. closure style inconsistencies.

## Testing
- Existing tests.
2024-12-30 22:59:36 +00:00
..
bevy_a11y Replace bevy_a11y::Focus with InputFocus (#16863) 2024-12-18 00:16:19 +00:00
bevy_animation Simplify sort/max_by calls (#17048) 2024-12-30 22:59:36 +00:00
bevy_app Add fallible add methods to PluginGroupBuilder (#17005) 2024-12-30 20:14:02 +00:00
bevy_asset Fix path checking for FileWatcher for virtual workspace projects (#16958) 2024-12-29 19:43:42 +00:00
bevy_audio Prefer Display over Debug (#16112) 2024-12-27 00:40:06 +00:00
bevy_color Fix msrvs (#17012) 2024-12-29 20:00:19 +00:00
bevy_core_pipeline Fix Docs // incorrect default value for ChromaticAberration intensity (#16994) 2024-12-29 19:32:44 +00:00
bevy_derive Add benchmarks and compile_fail tests back to workspace (#16858) 2024-12-21 22:30:29 +00:00
bevy_dev_tools Draw the UI debug overlay using the UI renderer (#16693) 2024-12-11 00:49:47 +00:00
bevy_diagnostic Remove bevy_core (#16897) 2024-12-19 18:36:51 +00:00
bevy_dylib Generate links to definition in source code pages on docs.rs and dev-docs.bevyengine.org (#12965) 2024-07-29 23:10:16 +00:00
bevy_ecs Simplify sort/max_by calls (#17048) 2024-12-30 22:59:36 +00:00
bevy_encase_derive Rust 1.83, allow -> expect (missing_docs) (#16561) 2024-12-16 23:27:57 +00:00
bevy_gilrs Deny derive_more error feature and replace it with thiserror (#16684) 2024-12-06 17:03:55 +00:00
bevy_gizmos Refactor non-core Curve methods into extension traits (#16930) 2024-12-29 19:26:49 +00:00
bevy_gltf Prefer Display over Debug (#16112) 2024-12-27 00:40:06 +00:00
bevy_hierarchy Refactor hierarchy-related commands to remove structs (#17029) 2024-12-30 20:58:03 +00:00
bevy_image Rust 1.83, allow -> expect (missing_docs) (#16561) 2024-12-16 23:27:57 +00:00
bevy_input Add no_std support to bevy_input (#16995) 2024-12-29 22:46:30 +00:00
bevy_input_focus Simplify sort/max_by calls (#17048) 2024-12-30 22:59:36 +00:00
bevy_internal Expose bevy_image as a feature (#16948) 2024-12-24 03:11:01 +00:00
bevy_log Basic filtering examples for users of the bevy_log. (#16455) 2024-12-29 22:56:40 +00:00
bevy_macro_utils Use one BevyManifest instance in proc macros (#16766) 2024-12-15 15:00:05 +00:00
bevy_math Simplify sort/max_by calls (#17048) 2024-12-30 22:59:36 +00:00
bevy_mesh Rust 1.83, allow -> expect (missing_docs) (#16561) 2024-12-16 23:27:57 +00:00
bevy_mikktspace Rust 1.83, allow -> expect (missing_docs) (#16561) 2024-12-16 23:27:57 +00:00
bevy_pbr Simplify sort/max_by calls (#17048) 2024-12-30 22:59:36 +00:00
bevy_picking Simplify sort/max_by calls (#17048) 2024-12-30 22:59:36 +00:00
bevy_ptr Fix MSRVs for standalone crates (#16333) 2024-11-17 09:38:13 +00:00
bevy_reflect Add no_std support to bevy_hierarchy (#16998) 2024-12-29 19:12:29 +00:00
bevy_remote BRP registry JSON schema endpoint (#16882) 2024-12-26 22:14:08 +00:00
bevy_render Simplify sort/max_by calls (#17048) 2024-12-30 22:59:36 +00:00
bevy_scene Simplify sort/max_by calls (#17048) 2024-12-30 22:59:36 +00:00
bevy_sprite prepare_sprite_image_bind_groups refactor (#17045) 2024-12-30 22:54:04 +00:00
bevy_state Add no_std support to bevy_state (#17028) 2024-12-29 23:28:18 +00:00
bevy_tasks Move futures.rs, ConditionalSend and BoxedFuture types to bevy_tasks (#16951) 2024-12-29 19:29:53 +00:00
bevy_text get_glyph_atlas_info refactor (#17044) 2024-12-30 21:08:12 +00:00
bevy_time Use en-us locale for typos (#16037) 2024-10-20 18:55:17 +00:00
bevy_transform Add no_std support to bevy_transform (#17030) 2024-12-30 21:01:13 +00:00
bevy_ui Prefer Display over Debug (#16112) 2024-12-27 00:40:06 +00:00
bevy_utils Add portable-atomic support to bevy_utils for once! (#17027) 2024-12-29 22:50:08 +00:00
bevy_window Make RawHandleWrapper fields private to save users from themselves (#16968) 2024-12-29 19:54:57 +00:00
bevy_winit Simplify sort/max_by calls (#17048) 2024-12-30 22:59:36 +00:00