From b337ed63adf815748f0fdb2e40106ca42cbaa800 Mon Sep 17 00:00:00 2001 From: Vladyslav Batyrenko Date: Mon, 5 Dec 2022 23:07:20 +0000 Subject: [PATCH] Borrow instead of consuming in `EventReader::clear` (#6851) The PR fixes the interface of `EventReader::clear`. Currently, the method consumes the reader, which makes it unusable. ## Changelog - `EventReader::clear` now takes a mutable reference instead of consuming the event reader. ## Migration Guide `EventReader::clear` now takes a mutable reference instead of consuming the event reader. This means that `clear` now needs explicit mutable access to the reader variable, which previously could have been omitted in some cases: ```rust // Old (0.9) fn clear_events(reader: EventReader) { reader.clear(); } // New (0.10) fn clear_events(mut reader: EventReader) { reader.clear(); } ``` Co-authored-by: Carter Anderson --- crates/bevy_ecs/src/event.rs | 6 +++--- examples/games/breakout.rs | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/crates/bevy_ecs/src/event.rs b/crates/bevy_ecs/src/event.rs index 78f3e46a8a..b7ea293b21 100644 --- a/crates/bevy_ecs/src/event.rs +++ b/crates/bevy_ecs/src/event.rs @@ -226,7 +226,7 @@ impl<'w, 's, E: Event> EventReader<'w, 's, E> { /// # /// struct CollisionEvent; /// - /// fn play_collision_sound(events: EventReader) { + /// fn play_collision_sound(mut events: EventReader) { /// if !events.is_empty() { /// events.clear(); /// // Play a sound @@ -246,7 +246,7 @@ impl<'w, 's, E: Event> EventReader<'w, 's, E> { /// In those situations you generally want to consume those events to make sure they don't appear in the next frame. /// /// For more information see [`EventReader::is_empty()`]. - pub fn clear(mut self) { + pub fn clear(&mut self) { self.iter().last(); } } @@ -817,7 +817,7 @@ mod tests { events.send(TestEvent { i: 0 }); world.insert_resource(events); - let mut reader = IntoSystem::into_system(|events: EventReader| -> bool { + let mut reader = IntoSystem::into_system(|mut events: EventReader| -> bool { if !events.is_empty() { events.clear(); false diff --git a/examples/games/breakout.rs b/examples/games/breakout.rs index 042190e501..263a148b66 100644 --- a/examples/games/breakout.rs +++ b/examples/games/breakout.rs @@ -404,7 +404,7 @@ fn check_for_collisions( } fn play_collision_sound( - collision_events: EventReader, + mut collision_events: EventReader, audio: Res