bevy/crates
urben1680 76b8310da5
Replace (Partial)Ord for EntityGeneration with corrected standalone method (#19432)
# Objective

#19421 implemented `Ord` for `EntityGeneration` along the lines of [the
impl from
slotmap](https://docs.rs/slotmap/latest/src/slotmap/util.rs.html#8):
```rs
/// Returns if a is an older version than b, taking into account wrapping of
/// versions.
pub fn is_older_version(a: u32, b: u32) -> bool {
    let diff = a.wrapping_sub(b);
    diff >= (1 << 31)
}
```

But that PR and the slotmap impl are different:

**slotmap impl**
- if `(1u32 << 31)` is greater than `a.wrapping_sub(b)`, then `a` is
older than `b`
- if `(1u32 << 31)` is equal to `a.wrapping_sub(b)`, then `a` is older
than `b`
- if `(1u32 << 31)` is less than `a.wrapping_sub(b)`, then `a` is equal
or newer than `b`

**previous PR impl**
- if `(1u32 << 31)` is greater than `a.wrapping_sub(b)`, then `a` is
older than `b`
- if `(1u32 << 31)` is equal to `a.wrapping_sub(b)`, then `a` is equal
to `b` ⚠️
- if `(1u32 << 31)` is less than `a.wrapping_sub(b)`, then `a` is newer
than `b` ⚠️

This ordering is also not transitive, therefore it should not implement
`PartialOrd`.

## Solution

Fix the impl in a standalone method, remove the `Partialord`/`Ord`
implementation.

## Testing

Given the first impl was wrong and got past reviews, I think a new unit
test is justified.
2025-06-07 22:29:13 +00:00
..
bevy_a11y bevyengine.org -> bevy.org (#19503) 2025-06-05 23:09:28 +00:00
bevy_animation bevyengine.org -> bevy.org (#19503) 2025-06-05 23:09:28 +00:00
bevy_anti_aliasing bevyengine.org -> bevy.org (#19503) 2025-06-05 23:09:28 +00:00
bevy_app generic component propagation (#17575) 2025-06-06 00:02:02 +00:00
bevy_asset bevyengine.org -> bevy.org (#19503) 2025-06-05 23:09:28 +00:00
bevy_audio bevyengine.org -> bevy.org (#19503) 2025-06-05 23:09:28 +00:00
bevy_color bevyengine.org -> bevy.org (#19503) 2025-06-05 23:09:28 +00:00
bevy_core_pipeline bevyengine.org -> bevy.org (#19503) 2025-06-05 23:09:28 +00:00
bevy_derive bevyengine.org -> bevy.org (#19503) 2025-06-05 23:09:28 +00:00
bevy_dev_tools bevyengine.org -> bevy.org (#19503) 2025-06-05 23:09:28 +00:00
bevy_diagnostic bevyengine.org -> bevy.org (#19503) 2025-06-05 23:09:28 +00:00
bevy_dylib bevyengine.org -> bevy.org (#19503) 2025-06-05 23:09:28 +00:00
bevy_ecs Replace (Partial)Ord for EntityGeneration with corrected standalone method (#19432) 2025-06-07 22:29:13 +00:00
bevy_encase_derive bevyengine.org -> bevy.org (#19503) 2025-06-05 23:09:28 +00:00
bevy_gilrs bevyengine.org -> bevy.org (#19503) 2025-06-05 23:09:28 +00:00
bevy_gizmos bevyengine.org -> bevy.org (#19503) 2025-06-05 23:09:28 +00:00
bevy_gltf bevyengine.org -> bevy.org (#19503) 2025-06-05 23:09:28 +00:00
bevy_image bevyengine.org -> bevy.org (#19503) 2025-06-05 23:09:28 +00:00
bevy_input bevyengine.org -> bevy.org (#19503) 2025-06-05 23:09:28 +00:00
bevy_input_focus bevyengine.org -> bevy.org (#19503) 2025-06-05 23:09:28 +00:00
bevy_internal bevyengine.org -> bevy.org (#19503) 2025-06-05 23:09:28 +00:00
bevy_log bevyengine.org -> bevy.org (#19503) 2025-06-05 23:09:28 +00:00
bevy_macro_utils bevyengine.org -> bevy.org (#19503) 2025-06-05 23:09:28 +00:00
bevy_math bevyengine.org -> bevy.org (#19503) 2025-06-05 23:09:28 +00:00
bevy_mesh bevyengine.org -> bevy.org (#19503) 2025-06-05 23:09:28 +00:00
bevy_mikktspace bevyengine.org -> bevy.org (#19503) 2025-06-05 23:09:28 +00:00
bevy_pbr bevyengine.org -> bevy.org (#19503) 2025-06-05 23:09:28 +00:00
bevy_picking Mention in the docs for pointer events that these are in screen-space. (#19518) 2025-06-06 22:20:14 +00:00
bevy_platform bevyengine.org -> bevy.org (#19503) 2025-06-05 23:09:28 +00:00
bevy_ptr bevyengine.org -> bevy.org (#19503) 2025-06-05 23:09:28 +00:00
bevy_reflect bevyengine.org -> bevy.org (#19503) 2025-06-05 23:09:28 +00:00
bevy_remote Only get valid component ids (#19510) 2025-06-06 20:59:57 +00:00
bevy_render bevyengine.org -> bevy.org (#19503) 2025-06-05 23:09:28 +00:00
bevy_scene Only get valid component ids (#19510) 2025-06-06 20:59:57 +00:00
bevy_sprite bevyengine.org -> bevy.org (#19503) 2025-06-05 23:09:28 +00:00
bevy_state bevyengine.org -> bevy.org (#19503) 2025-06-05 23:09:28 +00:00
bevy_tasks bevyengine.org -> bevy.org (#19503) 2025-06-05 23:09:28 +00:00
bevy_text Remove re-exports of cosmic_text types (#19516) 2025-06-06 21:49:02 +00:00
bevy_time bevyengine.org -> bevy.org (#19503) 2025-06-05 23:09:28 +00:00
bevy_transform bevyengine.org -> bevy.org (#19503) 2025-06-05 23:09:28 +00:00
bevy_ui bevyengine.org -> bevy.org (#19503) 2025-06-05 23:09:28 +00:00
bevy_utils bevyengine.org -> bevy.org (#19503) 2025-06-05 23:09:28 +00:00
bevy_window bevyengine.org -> bevy.org (#19503) 2025-06-05 23:09:28 +00:00
bevy_winit bevyengine.org -> bevy.org (#19503) 2025-06-05 23:09:28 +00:00