From 1e19863dd9f6a27a7174773794635a1e47b330f4 Mon Sep 17 00:00:00 2001 From: targrub Date: Sat, 17 Sep 2022 20:53:58 -0400 Subject: [PATCH 1/5] Fixing clippy errors and other errors from running `cargo run -p ci` --- crates/bevy_asset/src/asset_server.rs | 2 +- crates/bevy_audio/src/audio_output.rs | 2 +- crates/bevy_ecs/src/bundle.rs | 2 +- crates/bevy_ecs/src/component.rs | 6 +++--- crates/bevy_ecs/src/entity/mod.rs | 2 +- crates/bevy_ecs/src/world/world_cell.rs | 2 +- .../ui/query_combin_exact_sized_iterator_safety.stderr | 8 ++++---- .../tests/ui/query_exact_sized_iterator_safety.stderr | 4 ++-- .../ui/query_iter_combinations_mut_iterator_safety.stderr | 2 +- .../tests/ui/query_iter_many_mut_iterator_safety.stderr | 2 +- .../tests/ui/system_param_derive_readonly.stderr | 8 ++++---- crates/bevy_gltf/src/loader.rs | 4 ++-- crates/bevy_reflect/src/lib.rs | 4 ++-- crates/bevy_render/src/extract_resource.rs | 4 ++-- crates/bevy_render/src/mesh/mesh/skinning.rs | 2 +- crates/bevy_scene/src/scene_loader.rs | 2 +- crates/bevy_scene/src/serde.rs | 6 ++---- crates/bevy_tasks/src/task_pool.rs | 4 ++-- crates/bevy_text/src/text2d.rs | 6 +++--- crates/bevy_ui/src/flex/mod.rs | 4 ++-- crates/bevy_ui/src/widget/text.rs | 6 +++--- crates/bevy_window/src/system.rs | 2 +- examples/games/contributors.rs | 2 +- tools/build-example-pages/src/main.rs | 2 +- 24 files changed, 43 insertions(+), 45 deletions(-) diff --git a/crates/bevy_asset/src/asset_server.rs b/crates/bevy_asset/src/asset_server.rs index 3b1e2815c61ba..85681796efd3b 100644 --- a/crates/bevy_asset/src/asset_server.rs +++ b/crates/bevy_asset/src/asset_server.rs @@ -786,7 +786,7 @@ mod test { fn create_dir_and_file(file: impl AsRef) -> tempfile::TempDir { let asset_dir = tempfile::tempdir().unwrap(); - std::fs::write(asset_dir.path().join(file), &[]).unwrap(); + std::fs::write(asset_dir.path().join(file), []).unwrap(); asset_dir } diff --git a/crates/bevy_audio/src/audio_output.rs b/crates/bevy_audio/src/audio_output.rs index e378a2c43f4c3..b4f942c7c84c9 100644 --- a/crates/bevy_audio/src/audio_output.rs +++ b/crates/bevy_audio/src/audio_output.rs @@ -90,7 +90,7 @@ pub fn play_queued_audio_system( mut sinks: ResMut>, ) { if let Some(audio_sources) = audio_sources { - audio_output.try_play_queued(&*audio_sources, &mut *audio, &mut *sinks); + audio_output.try_play_queued(&*audio_sources, &mut *audio, &mut sinks); }; } diff --git a/crates/bevy_ecs/src/bundle.rs b/crates/bevy_ecs/src/bundle.rs index 8eb7730289f49..1993406934a74 100644 --- a/crates/bevy_ecs/src/bundle.rs +++ b/crates/bevy_ecs/src/bundle.rs @@ -483,7 +483,7 @@ impl<'a, 'b> BundleInserter<'a, 'b> { // redundant copies let move_result = self .table - .move_to_superset_unchecked(result.table_row, *new_table); + .move_to_superset_unchecked(result.table_row, new_table); let new_location = new_archetype.allocate(entity, move_result.new_row); self.entities.meta[entity.id as usize].location = new_location; diff --git a/crates/bevy_ecs/src/component.rs b/crates/bevy_ecs/src/component.rs index eb379934efed4..c59a1e2028737 100644 --- a/crates/bevy_ecs/src/component.rs +++ b/crates/bevy_ecs/src/component.rs @@ -294,7 +294,7 @@ impl ComponentDescriptor { is_send_and_sync: true, type_id: Some(TypeId::of::()), layout: Layout::new::(), - drop: needs_drop::().then(|| Self::drop_ptr:: as _), + drop: needs_drop::().then_some(Self::drop_ptr:: as _), } } @@ -331,7 +331,7 @@ impl ComponentDescriptor { is_send_and_sync: true, type_id: Some(TypeId::of::()), layout: Layout::new::(), - drop: needs_drop::().then(|| Self::drop_ptr:: as _), + drop: needs_drop::().then_some(Self::drop_ptr:: as _), } } @@ -342,7 +342,7 @@ impl ComponentDescriptor { is_send_and_sync: false, type_id: Some(TypeId::of::()), layout: Layout::new::(), - drop: needs_drop::().then(|| Self::drop_ptr:: as _), + drop: needs_drop::().then_some(Self::drop_ptr:: as _), } } diff --git a/crates/bevy_ecs/src/entity/mod.rs b/crates/bevy_ecs/src/entity/mod.rs index 80de2bb9fd008..cdaab44589e9d 100644 --- a/crates/bevy_ecs/src/entity/mod.rs +++ b/crates/bevy_ecs/src/entity/mod.rs @@ -550,7 +550,7 @@ impl Entities { // If this entity was manually created, then free_cursor might be positive // Returning None handles that case correctly let num_pending = usize::try_from(-free_cursor).ok()?; - (idu < self.meta.len() + num_pending).then(|| Entity { generation: 0, id }) + (idu < self.meta.len() + num_pending).then_some(Entity { generation: 0, id }) } } diff --git a/crates/bevy_ecs/src/world/world_cell.rs b/crates/bevy_ecs/src/world/world_cell.rs index 9db47dfd8c0a2..71357d0c8a358 100644 --- a/crates/bevy_ecs/src/world/world_cell.rs +++ b/crates/bevy_ecs/src/world/world_cell.rs @@ -155,7 +155,7 @@ impl<'w, T> Deref for WorldBorrowMut<'w, T> { impl<'w, T> DerefMut for WorldBorrowMut<'w, T> { fn deref_mut(&mut self) -> &mut Self::Target { - &mut *self.value + &mut self.value } } diff --git a/crates/bevy_ecs_compile_fail_tests/tests/ui/query_combin_exact_sized_iterator_safety.stderr b/crates/bevy_ecs_compile_fail_tests/tests/ui/query_combin_exact_sized_iterator_safety.stderr index 3de9d2c0897d7..c9f169ea3a9e2 100644 --- a/crates/bevy_ecs_compile_fail_tests/tests/ui/query_combin_exact_sized_iterator_safety.stderr +++ b/crates/bevy_ecs_compile_fail_tests/tests/ui/query_combin_exact_sized_iterator_safety.stderr @@ -16,8 +16,8 @@ error[E0277]: the trait bound `bevy_ecs::query::Changed: ArchetypeFilter` i (F0, F1, F2, F3, F4, F5, F6) (F0, F1, F2, F3, F4, F5, F6, F7) and 26 others - = note: required because of the requirements on the impl of `ArchetypeFilter` for `bevy_ecs::query::Or<(bevy_ecs::query::Changed, bevy_ecs::query::With)>` - = note: required because of the requirements on the impl of `ExactSizeIterator` for `QueryCombinationIter<'_, '_, &Foo, bevy_ecs::query::Or<(bevy_ecs::query::Changed, bevy_ecs::query::With)>, 2_usize>` + = note: required for `bevy_ecs::query::Or<(bevy_ecs::query::Changed, bevy_ecs::query::With)>` to implement `ArchetypeFilter` + = note: required for `QueryCombinationIter<'_, '_, &Foo, bevy_ecs::query::Or<(bevy_ecs::query::Changed, bevy_ecs::query::With)>, 2>` to implement `ExactSizeIterator` note: required by a bound in `is_exact_size_iterator` --> tests/ui/query_combin_exact_sized_iterator_safety.rs:18:30 | @@ -42,8 +42,8 @@ error[E0277]: the trait bound `bevy_ecs::query::Added: ArchetypeFilter` is (F0, F1, F2, F3, F4, F5, F6) (F0, F1, F2, F3, F4, F5, F6, F7) and 26 others - = note: required because of the requirements on the impl of `ArchetypeFilter` for `(bevy_ecs::query::Added, bevy_ecs::query::Without)` - = note: required because of the requirements on the impl of `ExactSizeIterator` for `QueryCombinationIter<'_, '_, &Foo, (bevy_ecs::query::Added, bevy_ecs::query::Without), 2_usize>` + = note: required for `(bevy_ecs::query::Added, bevy_ecs::query::Without)` to implement `ArchetypeFilter` + = note: required for `QueryCombinationIter<'_, '_, &Foo, (bevy_ecs::query::Added, bevy_ecs::query::Without), 2>` to implement `ExactSizeIterator` note: required by a bound in `is_exact_size_iterator` --> tests/ui/query_combin_exact_sized_iterator_safety.rs:18:30 | diff --git a/crates/bevy_ecs_compile_fail_tests/tests/ui/query_exact_sized_iterator_safety.stderr b/crates/bevy_ecs_compile_fail_tests/tests/ui/query_exact_sized_iterator_safety.stderr index fca7f7a52b731..7b79c4b3bd09f 100644 --- a/crates/bevy_ecs_compile_fail_tests/tests/ui/query_exact_sized_iterator_safety.stderr +++ b/crates/bevy_ecs_compile_fail_tests/tests/ui/query_exact_sized_iterator_safety.stderr @@ -16,7 +16,7 @@ error[E0277]: the trait bound `bevy_ecs::query::Changed: ArchetypeFilter` i (F0, F1, F2, F3, F4, F5, F6) (F0, F1, F2, F3, F4, F5, F6, F7) and 26 others - = note: required because of the requirements on the impl of `ExactSizeIterator` for `QueryIter<'_, '_, &Foo, bevy_ecs::query::Changed>` + = note: required for `QueryIter<'_, '_, &Foo, bevy_ecs::query::Changed>` to implement `ExactSizeIterator` note: required by a bound in `is_exact_size_iterator` --> tests/ui/query_exact_sized_iterator_safety.rs:16:30 | @@ -41,7 +41,7 @@ error[E0277]: the trait bound `bevy_ecs::query::Added: ArchetypeFilter` is (F0, F1, F2, F3, F4, F5, F6) (F0, F1, F2, F3, F4, F5, F6, F7) and 26 others - = note: required because of the requirements on the impl of `ExactSizeIterator` for `QueryIter<'_, '_, &Foo, bevy_ecs::query::Added>` + = note: required for `QueryIter<'_, '_, &Foo, bevy_ecs::query::Added>` to implement `ExactSizeIterator` note: required by a bound in `is_exact_size_iterator` --> tests/ui/query_exact_sized_iterator_safety.rs:16:30 | diff --git a/crates/bevy_ecs_compile_fail_tests/tests/ui/query_iter_combinations_mut_iterator_safety.stderr b/crates/bevy_ecs_compile_fail_tests/tests/ui/query_iter_combinations_mut_iterator_safety.stderr index 7cd36eadcff93..0537e668c3445 100644 --- a/crates/bevy_ecs_compile_fail_tests/tests/ui/query_iter_combinations_mut_iterator_safety.stderr +++ b/crates/bevy_ecs_compile_fail_tests/tests/ui/query_iter_combinations_mut_iterator_safety.stderr @@ -17,7 +17,7 @@ error[E0277]: the trait bound `&mut A: ReadOnlyWorldQuery` is not satisfied (F0, F1, F2, F3, F4, F5, F6) and 49 others = note: `ReadOnlyWorldQuery` is implemented for `&A`, but not for `&mut A` - = note: required because of the requirements on the impl of `Iterator` for `QueryCombinationIter<'_, '_, &mut A, (), {_: usize}>` + = note: required for `QueryCombinationIter<'_, '_, &mut A, (), _>` to implement `Iterator` note: required by a bound in `is_iterator` --> tests/ui/query_iter_combinations_mut_iterator_safety.rs:13:19 | diff --git a/crates/bevy_ecs_compile_fail_tests/tests/ui/query_iter_many_mut_iterator_safety.stderr b/crates/bevy_ecs_compile_fail_tests/tests/ui/query_iter_many_mut_iterator_safety.stderr index 45840aa3230be..476b6a717bc99 100644 --- a/crates/bevy_ecs_compile_fail_tests/tests/ui/query_iter_many_mut_iterator_safety.stderr +++ b/crates/bevy_ecs_compile_fail_tests/tests/ui/query_iter_many_mut_iterator_safety.stderr @@ -17,7 +17,7 @@ error[E0277]: the trait bound `&mut A: ReadOnlyWorldQuery` is not satisfied (F0, F1, F2, F3, F4, F5, F6) and 49 others = note: `ReadOnlyWorldQuery` is implemented for `&A`, but not for `&mut A` - = note: required because of the requirements on the impl of `Iterator` for `QueryManyIter<'_, '_, &mut A, (), std::array::IntoIter>` + = note: required for `QueryManyIter<'_, '_, &mut A, (), std::array::IntoIter>` to implement `Iterator` note: required by a bound in `is_iterator` --> tests/ui/query_iter_many_mut_iterator_safety.rs:13:19 | diff --git a/crates/bevy_ecs_compile_fail_tests/tests/ui/system_param_derive_readonly.stderr b/crates/bevy_ecs_compile_fail_tests/tests/ui/system_param_derive_readonly.stderr index 95333f44b0dd4..0a4edbd0a65ed 100644 --- a/crates/bevy_ecs_compile_fail_tests/tests/ui/system_param_derive_readonly.stderr +++ b/crates/bevy_ecs_compile_fail_tests/tests/ui/system_param_derive_readonly.stderr @@ -7,10 +7,10 @@ warning: unused import: `SystemState` = note: `#[warn(unused_imports)]` on by default error[E0277]: the trait bound `&'static mut Foo: ReadOnlyWorldQuery` is not satisfied - --> tests/ui/system_param_derive_readonly.rs:18:5 + --> tests/ui/system_param_derive_readonly.rs:18:23 | 18 | assert_readonly::(); - | ^^^^^^^^^^^^^^^^^^^^^^^^^^ the trait `ReadOnlyWorldQuery` is not implemented for `&'static mut Foo` + | ^^^^^^^ the trait `ReadOnlyWorldQuery` is not implemented for `&'static mut Foo` | = help: the following other types implement trait `ReadOnlyWorldQuery`: &T @@ -23,9 +23,9 @@ error[E0277]: the trait bound `&'static mut Foo: ReadOnlyWorldQuery` is not sati (F0, F1, F2, F3, F4, F5, F6) and 49 others = note: `ReadOnlyWorldQuery` is implemented for `&'static Foo`, but not for `&'static mut Foo` - = note: required because of the requirements on the impl of `ReadOnlySystemParamFetch` for `QueryState<&'static mut Foo>` + = note: required for `QueryState<&'static mut Foo>` to implement `ReadOnlySystemParamFetch` = note: 2 redundant requirements hidden - = note: required because of the requirements on the impl of `ReadOnlySystemParamFetch` for `FetchState<(QueryState<&'static mut Foo>,)>` + = note: required for `FetchState<(QueryState<&'static mut Foo>,)>` to implement `ReadOnlySystemParamFetch` note: required by a bound in `assert_readonly` --> tests/ui/system_param_derive_readonly.rs:23:32 | diff --git a/crates/bevy_gltf/src/loader.rs b/crates/bevy_gltf/src/loader.rs index 2db5126b7743f..9dceef6771eea 100644 --- a/crates/bevy_gltf/src/loader.rs +++ b/crates/bevy_gltf/src/loader.rs @@ -698,7 +698,7 @@ fn load_node( gltf_node: &gltf::Node, world_builder: &mut WorldChildBuilder, load_context: &mut LoadContext, - buffer_data: &[Vec], + _buffer_data: &[Vec], node_index_to_entity_map: &mut HashMap, entity_to_skin_index_map: &mut HashMap, active_camera_found: &mut bool, @@ -894,7 +894,7 @@ fn load_node( &child, parent, load_context, - buffer_data, + _buffer_data, node_index_to_entity_map, entity_to_skin_index_map, active_camera_found, diff --git a/crates/bevy_reflect/src/lib.rs b/crates/bevy_reflect/src/lib.rs index 8c1941653f915..9b11c534fdb83 100644 --- a/crates/bevy_reflect/src/lib.rs +++ b/crates/bevy_reflect/src/lib.rs @@ -93,7 +93,7 @@ pub mod __macro_exports { } #[cfg(test)] -#[allow(clippy::blacklisted_name, clippy::approx_constant)] +#[allow(clippy::disallowed_names, clippy::approx_constant)] mod tests { #[cfg(feature = "glam")] use ::glam::{vec3, Vec3}; @@ -188,7 +188,7 @@ mod tests { } #[test] - #[allow(clippy::blacklisted_name)] + #[allow(clippy::disallowed_names)] fn reflect_unit_struct() { #[derive(Reflect)] struct Foo(u32, u64); diff --git a/crates/bevy_render/src/extract_resource.rs b/crates/bevy_render/src/extract_resource.rs index 5201021bd4fe0..3fa92750421c8 100644 --- a/crates/bevy_render/src/extract_resource.rs +++ b/crates/bevy_render/src/extract_resource.rs @@ -48,7 +48,7 @@ pub fn extract_resource( ) { if let Some(mut target_resource) = target_resource { if main_resource.is_changed() { - *target_resource = R::extract_resource(&*main_resource); + *target_resource = R::extract_resource(&main_resource); } } else { #[cfg(debug_assertions)] @@ -60,6 +60,6 @@ pub fn extract_resource( std::any::type_name::() ); } - commands.insert_resource(R::extract_resource(&*main_resource)); + commands.insert_resource(R::extract_resource(&main_resource)); } } diff --git a/crates/bevy_render/src/mesh/mesh/skinning.rs b/crates/bevy_render/src/mesh/mesh/skinning.rs index 6d152689069ea..3c3cef062de06 100644 --- a/crates/bevy_render/src/mesh/mesh/skinning.rs +++ b/crates/bevy_render/src/mesh/mesh/skinning.rs @@ -39,6 +39,6 @@ impl From> for SkinnedMeshInverseBindposes { impl Deref for SkinnedMeshInverseBindposes { type Target = [Mat4]; fn deref(&self) -> &Self::Target { - &*self.0 + &self.0 } } diff --git a/crates/bevy_scene/src/scene_loader.rs b/crates/bevy_scene/src/scene_loader.rs index e13b2541eeb13..9054c4cf30ae5 100644 --- a/crates/bevy_scene/src/scene_loader.rs +++ b/crates/bevy_scene/src/scene_loader.rs @@ -30,7 +30,7 @@ impl AssetLoader for SceneLoader { Box::pin(async move { let mut deserializer = ron::de::Deserializer::from_bytes(bytes)?; let scene_deserializer = SceneDeserializer { - type_registry: &*self.type_registry.read(), + type_registry: &self.type_registry.read(), }; let scene = scene_deserializer.deserialize(&mut deserializer)?; load_context.set_default_asset(LoadedAsset::new(scene)); diff --git a/crates/bevy_scene/src/serde.rs b/crates/bevy_scene/src/serde.rs index e55a5fd4b592b..041eafce4f0f0 100644 --- a/crates/bevy_scene/src/serde.rs +++ b/crates/bevy_scene/src/serde.rs @@ -72,10 +72,8 @@ impl<'a> Serialize for ComponentsSerializer<'a> { { let mut state = serializer.serialize_seq(Some(self.components.len()))?; for component in self.components { - state.serialize_element(&ReflectSerializer::new( - &**component, - &*self.registry.read(), - ))?; + state + .serialize_element(&ReflectSerializer::new(&**component, &self.registry.read()))?; } state.end() } diff --git a/crates/bevy_tasks/src/task_pool.rs b/crates/bevy_tasks/src/task_pool.rs index ff4d5c6309792..7ea24bb6fa6e3 100644 --- a/crates/bevy_tasks/src/task_pool.rs +++ b/crates/bevy_tasks/src/task_pool.rs @@ -150,7 +150,7 @@ impl TaskPool { // before this function returns. However, rust has no way of knowing // this so we must convert to 'static here to appease the compiler as it is unable to // validate safety. - let executor: &async_executor::Executor = &*self.executor; + let executor: &async_executor::Executor = &self.executor; let executor: &'scope async_executor::Executor = unsafe { mem::transmute(executor) }; let local_executor: &'scope async_executor::LocalExecutor = unsafe { mem::transmute(local_executor) }; @@ -287,7 +287,7 @@ impl<'scope, T: Send + 'scope> Scope<'scope, T> { } #[cfg(test)] -#[allow(clippy::blacklisted_name)] +#[allow(clippy::disallowed_names)] mod tests { use super::*; use std::sync::{ diff --git a/crates/bevy_text/src/text2d.rs b/crates/bevy_text/src/text2d.rs index 2b5cb821b1cc5..f3e4693a1aca1 100644 --- a/crates/bevy_text/src/text2d.rs +++ b/crates/bevy_text/src/text2d.rs @@ -187,9 +187,9 @@ pub fn update_text2d_layout( scale_factor, text.alignment, text_bounds, - &mut *font_atlas_set_storage, - &mut *texture_atlases, - &mut *textures, + &mut font_atlas_set_storage, + &mut texture_atlases, + &mut textures, ) { Err(TextError::NoSuchFont) => { // There was an error processing the text layout, let's add this entity to the diff --git a/crates/bevy_ui/src/flex/mod.rs b/crates/bevy_ui/src/flex/mod.rs index 633d45aff5919..db2f30be8cdfc 100644 --- a/crates/bevy_ui/src/flex/mod.rs +++ b/crates/bevy_ui/src/flex/mod.rs @@ -229,9 +229,9 @@ pub fn flex_node_system( let scale_factor = logical_to_physical_factor * ui_scale.scale; if scale_factor_events.iter().next_back().is_some() || ui_scale.is_changed() { - update_changed(&mut *flex_surface, scale_factor, full_node_query); + update_changed(&mut flex_surface, scale_factor, full_node_query); } else { - update_changed(&mut *flex_surface, scale_factor, node_query); + update_changed(&mut flex_surface, scale_factor, node_query); } fn update_changed( diff --git a/crates/bevy_ui/src/widget/text.rs b/crates/bevy_ui/src/widget/text.rs index 77ed556a471c0..584775f4b5dab 100644 --- a/crates/bevy_ui/src/widget/text.rs +++ b/crates/bevy_ui/src/widget/text.rs @@ -113,9 +113,9 @@ pub fn text_system( scale_factor, text.alignment, node_size, - &mut *font_atlas_set_storage, - &mut *texture_atlases, - &mut *textures, + &mut font_atlas_set_storage, + &mut texture_atlases, + &mut textures, ) { Err(TextError::NoSuchFont) => { // There was an error processing the text layout, let's add this entity to the diff --git a/crates/bevy_window/src/system.rs b/crates/bevy_window/src/system.rs index 45a374fe2e09d..6cb17b877ab8f 100644 --- a/crates/bevy_window/src/system.rs +++ b/crates/bevy_window/src/system.rs @@ -44,7 +44,7 @@ pub fn close_on_esc( ) { // TODO: Track this in e.g. a resource to ensure consistent behaviour across similar systems for event in focused_events.iter() { - *focused = event.focused.then(|| event.id); + *focused = event.focused.then_some(event.id); } if let Some(focused) = &*focused { diff --git a/examples/games/contributors.rs b/examples/games/contributors.rs index f53670336022a..6e2688b3d9aca 100644 --- a/examples/games/contributors.rs +++ b/examples/games/contributors.rs @@ -324,7 +324,7 @@ fn contributors() -> Result { let manifest_dir = std::env::var("CARGO_MANIFEST_DIR").map_err(LoadContributorsError::Var)?; let mut cmd = std::process::Command::new("git") - .args(&["--no-pager", "log", "--pretty=format:%an"]) + .args(["--no-pager", "log", "--pretty=format:%an"]) .current_dir(manifest_dir) .stdout(Stdio::piped()) .spawn() diff --git a/tools/build-example-pages/src/main.rs b/tools/build-example-pages/src/main.rs index b64530a97bc9c..f480cc788a29b 100644 --- a/tools/build-example-pages/src/main.rs +++ b/tools/build-example-pages/src/main.rs @@ -112,7 +112,7 @@ fn parse_examples(panic_on_missing: bool) -> Vec { .get(&technical_name) .and_then(|metadata| metadata.get("hidden")) .and_then(|hidden| hidden.as_bool()) - .and_then(|hidden| hidden.then(|| ())) + .and_then(|hidden| hidden.then_some(())) .is_some() { return None; From 5fd536202d4c14a42e7dc161cdee0ef05732473d Mon Sep 17 00:00:00 2001 From: targrub Date: Sat, 17 Sep 2022 21:10:53 -0400 Subject: [PATCH 2/5] Changing WorldQuery to ReadOnlyWorldQuery as per https://github.com/bevyengine/bevy/issues/6005. --- crates/bevy_ecs/src/lib.rs | 6 +++-- crates/bevy_ecs/src/query/iter.rs | 26 ++++++++++++---------- crates/bevy_ecs/src/query/mod.rs | 6 ++--- crates/bevy_ecs/src/query/state.rs | 12 +++++----- crates/bevy_ecs/src/system/query.rs | 10 ++++----- crates/bevy_ecs/src/system/system_param.rs | 17 +++++++++----- crates/bevy_ecs/src/world/mod.rs | 4 ++-- crates/bevy_ui/src/flex/mod.rs | 4 ++-- 8 files changed, 47 insertions(+), 38 deletions(-) diff --git a/crates/bevy_ecs/src/lib.rs b/crates/bevy_ecs/src/lib.rs index 124a7c7261369..f2328fdf0de7a 100644 --- a/crates/bevy_ecs/src/lib.rs +++ b/crates/bevy_ecs/src/lib.rs @@ -57,7 +57,9 @@ mod tests { bundle::Bundle, component::{Component, ComponentId}, entity::Entity, - query::{Added, ChangeTrackers, Changed, FilteredAccess, With, Without, WorldQuery}, + query::{ + Added, ChangeTrackers, Changed, FilteredAccess, ReadOnlyWorldQuery, With, Without, + }, system::Resource, world::{Mut, World}, }; @@ -902,7 +904,7 @@ mod tests { } } - fn get_filtered(world: &mut World) -> Vec { + fn get_filtered(world: &mut World) -> Vec { world .query_filtered::() .iter(world) diff --git a/crates/bevy_ecs/src/query/iter.rs b/crates/bevy_ecs/src/query/iter.rs index b75b13aa54e92..20f70a6c4340d 100644 --- a/crates/bevy_ecs/src/query/iter.rs +++ b/crates/bevy_ecs/src/query/iter.rs @@ -13,14 +13,14 @@ use super::{QueryFetch, QueryItem, ReadOnlyWorldQuery}; /// /// This struct is created by the [`Query::iter`](crate::system::Query::iter) and /// [`Query::iter_mut`](crate::system::Query::iter_mut) methods. -pub struct QueryIter<'w, 's, Q: WorldQuery, F: WorldQuery> { +pub struct QueryIter<'w, 's, Q: WorldQuery, F: ReadOnlyWorldQuery> { tables: &'w Tables, archetypes: &'w Archetypes, query_state: &'s QueryState, cursor: QueryIterationCursor<'w, 's, Q, F>, } -impl<'w, 's, Q: WorldQuery, F: WorldQuery> QueryIter<'w, 's, Q, F> { +impl<'w, 's, Q: WorldQuery, F: ReadOnlyWorldQuery> QueryIter<'w, 's, Q, F> { /// # Safety /// This does not check for mutable query correctness. To be safe, make sure mutable queries /// have unique access to the components they query. @@ -41,7 +41,7 @@ impl<'w, 's, Q: WorldQuery, F: WorldQuery> QueryIter<'w, 's, Q, F> { } } -impl<'w, 's, Q: WorldQuery, F: WorldQuery> Iterator for QueryIter<'w, 's, Q, F> { +impl<'w, 's, Q: WorldQuery, F: ReadOnlyWorldQuery> Iterator for QueryIter<'w, 's, Q, F> { type Item = QueryItem<'w, Q>; #[inline(always)] @@ -70,12 +70,12 @@ impl<'w, 's, Q: WorldQuery, F: WorldQuery> Iterator for QueryIter<'w, 's, Q, F> } // This is correct as [`QueryIter`] always returns `None` once exhausted. -impl<'w, 's, Q: WorldQuery, F: WorldQuery> FusedIterator for QueryIter<'w, 's, Q, F> {} +impl<'w, 's, Q: WorldQuery, F: ReadOnlyWorldQuery> FusedIterator for QueryIter<'w, 's, Q, F> {} /// An [`Iterator`] over [`Query`](crate::system::Query) results of a list of [`Entity`]s. /// /// This struct is created by the [`Query::iter_many`](crate::system::Query::iter_many) and [`Query::iter_many_mut`](crate::system::Query::iter_many_mut) methods. -pub struct QueryManyIter<'w, 's, Q: WorldQuery, F: WorldQuery, I: Iterator> +pub struct QueryManyIter<'w, 's, Q: WorldQuery, F: ReadOnlyWorldQuery, I: Iterator> where I::Item: Borrow, { @@ -88,7 +88,7 @@ where query_state: &'s QueryState, } -impl<'w, 's, Q: WorldQuery, F: WorldQuery, I: Iterator> QueryManyIter<'w, 's, Q, F, I> +impl<'w, 's, Q: WorldQuery, F: ReadOnlyWorldQuery, I: Iterator> QueryManyIter<'w, 's, Q, F, I> where I::Item: Borrow, { @@ -267,14 +267,16 @@ where /// [`Query`]: crate::system::Query /// [`Query::iter_combinations`]: crate::system::Query::iter_combinations /// [`Query::iter_combinations_mut`]: crate::system::Query::iter_combinations_mut -pub struct QueryCombinationIter<'w, 's, Q: WorldQuery, F: WorldQuery, const K: usize> { +pub struct QueryCombinationIter<'w, 's, Q: WorldQuery, F: ReadOnlyWorldQuery, const K: usize> { tables: &'w Tables, archetypes: &'w Archetypes, query_state: &'s QueryState, cursors: [QueryIterationCursor<'w, 's, Q, F>; K], } -impl<'w, 's, Q: WorldQuery, F: WorldQuery, const K: usize> QueryCombinationIter<'w, 's, Q, F, K> { +impl<'w, 's, Q: WorldQuery, F: ReadOnlyWorldQuery, const K: usize> + QueryCombinationIter<'w, 's, Q, F, K> +{ /// # Safety /// This does not check for mutable query correctness. To be safe, make sure mutable queries /// have unique access to the components they query. @@ -436,7 +438,7 @@ where } } -impl<'w, 's, Q: WorldQuery, F: WorldQuery> ExactSizeIterator for QueryIter<'w, 's, Q, F> +impl<'w, 's, Q: WorldQuery, F: ReadOnlyWorldQuery> ExactSizeIterator for QueryIter<'w, 's, Q, F> where F: ArchetypeFilter, { @@ -473,7 +475,7 @@ where { } -struct QueryIterationCursor<'w, 's, Q: WorldQuery, F: WorldQuery> { +struct QueryIterationCursor<'w, 's, Q: WorldQuery, F: ReadOnlyWorldQuery> { table_id_iter: std::slice::Iter<'s, TableId>, archetype_id_iter: std::slice::Iter<'s, ArchetypeId>, fetch: QueryFetch<'w, Q>, @@ -485,7 +487,7 @@ struct QueryIterationCursor<'w, 's, Q: WorldQuery, F: WorldQuery> { phantom: PhantomData, } -impl<'w, 's, Q: WorldQuery, F: WorldQuery> Clone for QueryIterationCursor<'w, 's, Q, F> +impl<'w, 's, Q: WorldQuery, F: ReadOnlyWorldQuery> Clone for QueryIterationCursor<'w, 's, Q, F> where QueryFetch<'w, Q>: Clone, QueryFetch<'w, F>: Clone, @@ -503,7 +505,7 @@ where } } -impl<'w, 's, Q: WorldQuery, F: WorldQuery> QueryIterationCursor<'w, 's, Q, F> { +impl<'w, 's, Q: WorldQuery, F: ReadOnlyWorldQuery> QueryIterationCursor<'w, 's, Q, F> { const IS_DENSE: bool = Q::IS_DENSE && F::IS_DENSE; unsafe fn init_empty( diff --git a/crates/bevy_ecs/src/query/mod.rs b/crates/bevy_ecs/src/query/mod.rs index 3efb6a5dc1017..c45a10af7d0b0 100644 --- a/crates/bevy_ecs/src/query/mod.rs +++ b/crates/bevy_ecs/src/query/mod.rs @@ -19,7 +19,7 @@ pub(crate) unsafe fn debug_checked_unreachable() -> ! { #[cfg(test)] mod tests { - use super::WorldQuery; + use super::{ReadOnlyWorldQuery, WorldQuery}; use crate::prelude::{AnyOf, Entity, Or, QueryState, With, Without}; use crate::query::{ArchetypeFilter, QueryCombinationIter, QueryFetch}; use crate::system::{IntoSystem, Query, System, SystemState}; @@ -68,7 +68,7 @@ mod tests { fn assert_combination(world: &mut World, expected_size: usize) where Q: WorldQuery, - F: WorldQuery, + F: ReadOnlyWorldQuery, F::ReadOnly: ArchetypeFilter, for<'w> QueryFetch<'w, Q::ReadOnly>: Clone, for<'w> QueryFetch<'w, F::ReadOnly>: Clone, @@ -81,7 +81,7 @@ mod tests { fn assert_all_sizes_equal(world: &mut World, expected_size: usize) where Q: WorldQuery, - F: WorldQuery, + F: ReadOnlyWorldQuery, F::ReadOnly: ArchetypeFilter, for<'w> QueryFetch<'w, Q::ReadOnly>: Clone, for<'w> QueryFetch<'w, F::ReadOnly>: Clone, diff --git a/crates/bevy_ecs/src/query/state.rs b/crates/bevy_ecs/src/query/state.rs index 9a1f08cde42d3..9a0942d646624 100644 --- a/crates/bevy_ecs/src/query/state.rs +++ b/crates/bevy_ecs/src/query/state.rs @@ -13,14 +13,14 @@ use bevy_utils::tracing::Instrument; use fixedbitset::FixedBitSet; use std::{borrow::Borrow, fmt}; -use super::{NopWorldQuery, QueryItem, QueryManyIter, ROQueryItem}; +use super::{NopWorldQuery, QueryItem, QueryManyIter, ROQueryItem, ReadOnlyWorldQuery}; /// Provides scoped access to a [`World`] state according to a given [`WorldQuery`] and query filter. #[repr(C)] // SAFETY NOTE: // Do not add any new fields that use the `Q` or `F` generic parameters as this may // make `QueryState::as_transmuted_state` unsound if not done with care. -pub struct QueryState { +pub struct QueryState { world_id: WorldId, pub(crate) archetype_generation: ArchetypeGeneration, pub(crate) matched_tables: FixedBitSet, @@ -35,13 +35,13 @@ pub struct QueryState { pub(crate) filter_state: F::State, } -impl FromWorld for QueryState { +impl FromWorld for QueryState { fn from_world(world: &mut World) -> Self { world.query_filtered() } } -impl QueryState { +impl QueryState { /// Converts this `QueryState` reference to a `QueryState` that does not access anything mutably. pub fn as_readonly(&self) -> &QueryState { // SAFETY: invariant on `WorldQuery` trait upholds that `Q::ReadOnly` and `F::ReadOnly` @@ -71,7 +71,7 @@ impl QueryState { /// `NewF` must have a subset of the access that `F` does and match the exact same archetypes/tables pub(crate) unsafe fn as_transmuted_state< NewQ: WorldQuery, - NewF: WorldQuery, + NewF: ReadOnlyWorldQuery, >( &self, ) -> &QueryState { @@ -79,7 +79,7 @@ impl QueryState { } } -impl QueryState { +impl QueryState { /// Creates a new [`QueryState`] from a given [`World`] and inherits the result of `world.id()`. pub fn new(world: &mut World) -> Self { let fetch_state = Q::init_state(world); diff --git a/crates/bevy_ecs/src/system/query.rs b/crates/bevy_ecs/src/system/query.rs index 3e4d37914b622..ce6cc2e470151 100644 --- a/crates/bevy_ecs/src/system/query.rs +++ b/crates/bevy_ecs/src/system/query.rs @@ -273,14 +273,14 @@ use std::{any::TypeId, borrow::Borrow, fmt::Debug}; /// [`Table`]: crate::storage::Table /// [`With`]: crate::query::With /// [`Without`]: crate::query::Without -pub struct Query<'world, 'state, Q: WorldQuery, F: WorldQuery = ()> { +pub struct Query<'world, 'state, Q: WorldQuery, F: ReadOnlyWorldQuery = ()> { pub(crate) world: &'world World, pub(crate) state: &'state QueryState, pub(crate) last_change_tick: u32, pub(crate) change_tick: u32, } -impl<'w, 's, Q: WorldQuery, F: WorldQuery> Query<'w, 's, Q, F> { +impl<'w, 's, Q: WorldQuery, F: ReadOnlyWorldQuery> Query<'w, 's, Q, F> { /// Creates a new query. /// /// # Safety @@ -1380,7 +1380,7 @@ impl<'w, 's, Q: WorldQuery, F: WorldQuery> Query<'w, 's, Q, F> { } } -impl<'w, 's, Q: WorldQuery, F: WorldQuery> IntoIterator for &'w Query<'_, 's, Q, F> { +impl<'w, 's, Q: WorldQuery, F: ReadOnlyWorldQuery> IntoIterator for &'w Query<'_, 's, Q, F> { type Item = ROQueryItem<'w, Q>; type IntoIter = QueryIter<'w, 's, Q::ReadOnly, F::ReadOnly>; @@ -1389,7 +1389,7 @@ impl<'w, 's, Q: WorldQuery, F: WorldQuery> IntoIterator for &'w Query<'_, 's, Q, } } -impl<'w, 's, Q: WorldQuery, F: WorldQuery> IntoIterator for &'w mut Query<'_, 's, Q, F> { +impl<'w, 's, Q: WorldQuery, F: ReadOnlyWorldQuery> IntoIterator for &'w mut Query<'_, 's, Q, F> { type Item = QueryItem<'w, Q>; type IntoIter = QueryIter<'w, 's, Q, F>; @@ -1434,7 +1434,7 @@ impl std::fmt::Display for QueryComponentError { } } -impl<'w, 's, Q: ReadOnlyWorldQuery, F: WorldQuery> Query<'w, 's, Q, F> { +impl<'w, 's, Q: ReadOnlyWorldQuery, F: ReadOnlyWorldQuery> Query<'w, 's, Q, F> { /// Returns the query item for the given [`Entity`], with the actual "inner" world lifetime. /// /// In case of a nonexisting entity or mismatched component, a [`QueryEntityError`] is diff --git a/crates/bevy_ecs/src/system/system_param.rs b/crates/bevy_ecs/src/system/system_param.rs index ef956c25d553e..9fe9ed0af3cd1 100644 --- a/crates/bevy_ecs/src/system/system_param.rs +++ b/crates/bevy_ecs/src/system/system_param.rs @@ -135,16 +135,21 @@ pub trait SystemParamFetch<'world, 'state>: SystemParamState { ) -> Self::Item; } -impl<'w, 's, Q: WorldQuery + 'static, F: WorldQuery + 'static> SystemParam for Query<'w, 's, Q, F> { +impl<'w, 's, Q: WorldQuery + 'static, F: ReadOnlyWorldQuery + 'static> SystemParam + for Query<'w, 's, Q, F> +{ type Fetch = QueryState; } // SAFETY: QueryState is constrained to read-only fetches, so it only reads World. -unsafe impl ReadOnlySystemParamFetch for QueryState {} +unsafe impl ReadOnlySystemParamFetch + for QueryState +{ +} // SAFETY: Relevant query ComponentId and ArchetypeComponentId access is applied to SystemMeta. If // this QueryState conflicts with any prior access, a panic will occur. -unsafe impl SystemParamState +unsafe impl SystemParamState for QueryState { fn init(world: &mut World, system_meta: &mut SystemMeta) -> Self { @@ -174,7 +179,7 @@ unsafe impl SystemParamState } } -impl<'w, 's, Q: WorldQuery + 'static, F: WorldQuery + 'static> SystemParamFetch<'w, 's> +impl<'w, 's, Q: WorldQuery + 'static, F: ReadOnlyWorldQuery + 'static> SystemParamFetch<'w, 's> for QueryState { type Item = Query<'w, 's, Q, F>; @@ -1595,7 +1600,7 @@ mod tests { use super::SystemParam; use crate::{ self as bevy_ecs, // Necessary for the `SystemParam` Derive when used inside `bevy_ecs`. - query::WorldQuery, + query::{ReadOnlyWorldQuery, WorldQuery}, system::Query, }; @@ -1605,7 +1610,7 @@ mod tests { 'w, 's, Q: WorldQuery + Send + Sync + 'static, - F: WorldQuery + Send + Sync + 'static = (), + F: ReadOnlyWorldQuery + Send + Sync + 'static = (), > { _query: Query<'w, 's, Q, F>, } diff --git a/crates/bevy_ecs/src/world/mod.rs b/crates/bevy_ecs/src/world/mod.rs index 82863ef36cae1..3537b0a232b29 100644 --- a/crates/bevy_ecs/src/world/mod.rs +++ b/crates/bevy_ecs/src/world/mod.rs @@ -16,7 +16,7 @@ use crate::{ StorageType, }, entity::{AllocAtWithoutReplacement, Entities, Entity}, - query::{QueryState, WorldQuery}, + query::{QueryState, ReadOnlyWorldQuery, WorldQuery}, storage::{Column, SparseSet, Storages}, system::Resource, }; @@ -610,7 +610,7 @@ impl World { /// assert_eq!(matching_entities, vec![e2]); /// ``` #[inline] - pub fn query_filtered(&mut self) -> QueryState { + pub fn query_filtered(&mut self) -> QueryState { QueryState::new(self) } diff --git a/crates/bevy_ui/src/flex/mod.rs b/crates/bevy_ui/src/flex/mod.rs index db2f30be8cdfc..ba49e6572b9d1 100644 --- a/crates/bevy_ui/src/flex/mod.rs +++ b/crates/bevy_ui/src/flex/mod.rs @@ -4,7 +4,7 @@ use crate::{CalculatedSize, Node, Style, UiScale}; use bevy_ecs::{ entity::Entity, event::EventReader, - query::{Changed, With, Without, WorldQuery}, + query::{Changed, ReadOnlyWorldQuery, With, Without}, system::{Query, RemovedComponents, Res, ResMut, Resource}, }; use bevy_hierarchy::{Children, Parent}; @@ -234,7 +234,7 @@ pub fn flex_node_system( update_changed(&mut flex_surface, scale_factor, node_query); } - fn update_changed( + fn update_changed( flex_surface: &mut FlexSurface, scaling_factor: f64, query: Query<(Entity, &Style, Option<&CalculatedSize>), F>, From 17409e0aefc59e17899a199459fa0f7cec981720 Mon Sep 17 00:00:00 2001 From: targrub Date: Sat, 17 Sep 2022 21:30:43 -0400 Subject: [PATCH 3/5] Clippy for current Bevy ci wants disallowed_types rather than disallowed_names. --- crates/bevy_reflect/src/lib.rs | 4 ++-- crates/bevy_tasks/src/task_pool.rs | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/crates/bevy_reflect/src/lib.rs b/crates/bevy_reflect/src/lib.rs index 9b11c534fdb83..07c1cd0ec1ca0 100644 --- a/crates/bevy_reflect/src/lib.rs +++ b/crates/bevy_reflect/src/lib.rs @@ -93,7 +93,7 @@ pub mod __macro_exports { } #[cfg(test)] -#[allow(clippy::disallowed_names, clippy::approx_constant)] +#[allow(clippy::disallowed_types, clippy::approx_constant)] mod tests { #[cfg(feature = "glam")] use ::glam::{vec3, Vec3}; @@ -188,7 +188,7 @@ mod tests { } #[test] - #[allow(clippy::disallowed_names)] + #[allow(clippy::disallowed_types)] fn reflect_unit_struct() { #[derive(Reflect)] struct Foo(u32, u64); diff --git a/crates/bevy_tasks/src/task_pool.rs b/crates/bevy_tasks/src/task_pool.rs index 7ea24bb6fa6e3..b52ce0b9f1445 100644 --- a/crates/bevy_tasks/src/task_pool.rs +++ b/crates/bevy_tasks/src/task_pool.rs @@ -287,7 +287,7 @@ impl<'scope, T: Send + 'scope> Scope<'scope, T> { } #[cfg(test)] -#[allow(clippy::disallowed_names)] +#[allow(clippy::disallowed_types)] mod tests { use super::*; use std::sync::{ From b56700c601cd73fa0b56b034793681ba0f5ec6b1 Mon Sep 17 00:00:00 2001 From: targrub Date: Sat, 17 Sep 2022 21:42:12 -0400 Subject: [PATCH 4/5] Compile failure errors changed back to the results of using stable toolchain rather than nightly. --- .../ui/query_combin_exact_sized_iterator_safety.stderr | 8 ++++---- .../tests/ui/query_exact_sized_iterator_safety.stderr | 4 ++-- .../ui/query_iter_combinations_mut_iterator_safety.stderr | 2 +- .../tests/ui/query_iter_many_mut_iterator_safety.stderr | 2 +- .../tests/ui/system_param_derive_readonly.stderr | 8 ++++---- 5 files changed, 12 insertions(+), 12 deletions(-) diff --git a/crates/bevy_ecs_compile_fail_tests/tests/ui/query_combin_exact_sized_iterator_safety.stderr b/crates/bevy_ecs_compile_fail_tests/tests/ui/query_combin_exact_sized_iterator_safety.stderr index c9f169ea3a9e2..3de9d2c0897d7 100644 --- a/crates/bevy_ecs_compile_fail_tests/tests/ui/query_combin_exact_sized_iterator_safety.stderr +++ b/crates/bevy_ecs_compile_fail_tests/tests/ui/query_combin_exact_sized_iterator_safety.stderr @@ -16,8 +16,8 @@ error[E0277]: the trait bound `bevy_ecs::query::Changed: ArchetypeFilter` i (F0, F1, F2, F3, F4, F5, F6) (F0, F1, F2, F3, F4, F5, F6, F7) and 26 others - = note: required for `bevy_ecs::query::Or<(bevy_ecs::query::Changed, bevy_ecs::query::With)>` to implement `ArchetypeFilter` - = note: required for `QueryCombinationIter<'_, '_, &Foo, bevy_ecs::query::Or<(bevy_ecs::query::Changed, bevy_ecs::query::With)>, 2>` to implement `ExactSizeIterator` + = note: required because of the requirements on the impl of `ArchetypeFilter` for `bevy_ecs::query::Or<(bevy_ecs::query::Changed, bevy_ecs::query::With)>` + = note: required because of the requirements on the impl of `ExactSizeIterator` for `QueryCombinationIter<'_, '_, &Foo, bevy_ecs::query::Or<(bevy_ecs::query::Changed, bevy_ecs::query::With)>, 2_usize>` note: required by a bound in `is_exact_size_iterator` --> tests/ui/query_combin_exact_sized_iterator_safety.rs:18:30 | @@ -42,8 +42,8 @@ error[E0277]: the trait bound `bevy_ecs::query::Added: ArchetypeFilter` is (F0, F1, F2, F3, F4, F5, F6) (F0, F1, F2, F3, F4, F5, F6, F7) and 26 others - = note: required for `(bevy_ecs::query::Added, bevy_ecs::query::Without)` to implement `ArchetypeFilter` - = note: required for `QueryCombinationIter<'_, '_, &Foo, (bevy_ecs::query::Added, bevy_ecs::query::Without), 2>` to implement `ExactSizeIterator` + = note: required because of the requirements on the impl of `ArchetypeFilter` for `(bevy_ecs::query::Added, bevy_ecs::query::Without)` + = note: required because of the requirements on the impl of `ExactSizeIterator` for `QueryCombinationIter<'_, '_, &Foo, (bevy_ecs::query::Added, bevy_ecs::query::Without), 2_usize>` note: required by a bound in `is_exact_size_iterator` --> tests/ui/query_combin_exact_sized_iterator_safety.rs:18:30 | diff --git a/crates/bevy_ecs_compile_fail_tests/tests/ui/query_exact_sized_iterator_safety.stderr b/crates/bevy_ecs_compile_fail_tests/tests/ui/query_exact_sized_iterator_safety.stderr index 7b79c4b3bd09f..fca7f7a52b731 100644 --- a/crates/bevy_ecs_compile_fail_tests/tests/ui/query_exact_sized_iterator_safety.stderr +++ b/crates/bevy_ecs_compile_fail_tests/tests/ui/query_exact_sized_iterator_safety.stderr @@ -16,7 +16,7 @@ error[E0277]: the trait bound `bevy_ecs::query::Changed: ArchetypeFilter` i (F0, F1, F2, F3, F4, F5, F6) (F0, F1, F2, F3, F4, F5, F6, F7) and 26 others - = note: required for `QueryIter<'_, '_, &Foo, bevy_ecs::query::Changed>` to implement `ExactSizeIterator` + = note: required because of the requirements on the impl of `ExactSizeIterator` for `QueryIter<'_, '_, &Foo, bevy_ecs::query::Changed>` note: required by a bound in `is_exact_size_iterator` --> tests/ui/query_exact_sized_iterator_safety.rs:16:30 | @@ -41,7 +41,7 @@ error[E0277]: the trait bound `bevy_ecs::query::Added: ArchetypeFilter` is (F0, F1, F2, F3, F4, F5, F6) (F0, F1, F2, F3, F4, F5, F6, F7) and 26 others - = note: required for `QueryIter<'_, '_, &Foo, bevy_ecs::query::Added>` to implement `ExactSizeIterator` + = note: required because of the requirements on the impl of `ExactSizeIterator` for `QueryIter<'_, '_, &Foo, bevy_ecs::query::Added>` note: required by a bound in `is_exact_size_iterator` --> tests/ui/query_exact_sized_iterator_safety.rs:16:30 | diff --git a/crates/bevy_ecs_compile_fail_tests/tests/ui/query_iter_combinations_mut_iterator_safety.stderr b/crates/bevy_ecs_compile_fail_tests/tests/ui/query_iter_combinations_mut_iterator_safety.stderr index 0537e668c3445..7cd36eadcff93 100644 --- a/crates/bevy_ecs_compile_fail_tests/tests/ui/query_iter_combinations_mut_iterator_safety.stderr +++ b/crates/bevy_ecs_compile_fail_tests/tests/ui/query_iter_combinations_mut_iterator_safety.stderr @@ -17,7 +17,7 @@ error[E0277]: the trait bound `&mut A: ReadOnlyWorldQuery` is not satisfied (F0, F1, F2, F3, F4, F5, F6) and 49 others = note: `ReadOnlyWorldQuery` is implemented for `&A`, but not for `&mut A` - = note: required for `QueryCombinationIter<'_, '_, &mut A, (), _>` to implement `Iterator` + = note: required because of the requirements on the impl of `Iterator` for `QueryCombinationIter<'_, '_, &mut A, (), {_: usize}>` note: required by a bound in `is_iterator` --> tests/ui/query_iter_combinations_mut_iterator_safety.rs:13:19 | diff --git a/crates/bevy_ecs_compile_fail_tests/tests/ui/query_iter_many_mut_iterator_safety.stderr b/crates/bevy_ecs_compile_fail_tests/tests/ui/query_iter_many_mut_iterator_safety.stderr index 476b6a717bc99..45840aa3230be 100644 --- a/crates/bevy_ecs_compile_fail_tests/tests/ui/query_iter_many_mut_iterator_safety.stderr +++ b/crates/bevy_ecs_compile_fail_tests/tests/ui/query_iter_many_mut_iterator_safety.stderr @@ -17,7 +17,7 @@ error[E0277]: the trait bound `&mut A: ReadOnlyWorldQuery` is not satisfied (F0, F1, F2, F3, F4, F5, F6) and 49 others = note: `ReadOnlyWorldQuery` is implemented for `&A`, but not for `&mut A` - = note: required for `QueryManyIter<'_, '_, &mut A, (), std::array::IntoIter>` to implement `Iterator` + = note: required because of the requirements on the impl of `Iterator` for `QueryManyIter<'_, '_, &mut A, (), std::array::IntoIter>` note: required by a bound in `is_iterator` --> tests/ui/query_iter_many_mut_iterator_safety.rs:13:19 | diff --git a/crates/bevy_ecs_compile_fail_tests/tests/ui/system_param_derive_readonly.stderr b/crates/bevy_ecs_compile_fail_tests/tests/ui/system_param_derive_readonly.stderr index 0a4edbd0a65ed..95333f44b0dd4 100644 --- a/crates/bevy_ecs_compile_fail_tests/tests/ui/system_param_derive_readonly.stderr +++ b/crates/bevy_ecs_compile_fail_tests/tests/ui/system_param_derive_readonly.stderr @@ -7,10 +7,10 @@ warning: unused import: `SystemState` = note: `#[warn(unused_imports)]` on by default error[E0277]: the trait bound `&'static mut Foo: ReadOnlyWorldQuery` is not satisfied - --> tests/ui/system_param_derive_readonly.rs:18:23 + --> tests/ui/system_param_derive_readonly.rs:18:5 | 18 | assert_readonly::(); - | ^^^^^^^ the trait `ReadOnlyWorldQuery` is not implemented for `&'static mut Foo` + | ^^^^^^^^^^^^^^^^^^^^^^^^^^ the trait `ReadOnlyWorldQuery` is not implemented for `&'static mut Foo` | = help: the following other types implement trait `ReadOnlyWorldQuery`: &T @@ -23,9 +23,9 @@ error[E0277]: the trait bound `&'static mut Foo: ReadOnlyWorldQuery` is not sati (F0, F1, F2, F3, F4, F5, F6) and 49 others = note: `ReadOnlyWorldQuery` is implemented for `&'static Foo`, but not for `&'static mut Foo` - = note: required for `QueryState<&'static mut Foo>` to implement `ReadOnlySystemParamFetch` + = note: required because of the requirements on the impl of `ReadOnlySystemParamFetch` for `QueryState<&'static mut Foo>` = note: 2 redundant requirements hidden - = note: required for `FetchState<(QueryState<&'static mut Foo>,)>` to implement `ReadOnlySystemParamFetch` + = note: required because of the requirements on the impl of `ReadOnlySystemParamFetch` for `FetchState<(QueryState<&'static mut Foo>,)>` note: required by a bound in `assert_readonly` --> tests/ui/system_param_derive_readonly.rs:23:32 | From 582fc171eec0657fc42a9585e6b942aa7dedcb73 Mon Sep 17 00:00:00 2001 From: targrub Date: Sat, 17 Sep 2022 21:48:36 -0400 Subject: [PATCH 5/5] Corrected after reverting two previous commits. --- crates/bevy_asset/src/asset_server.rs | 2 +- crates/bevy_audio/src/audio_output.rs | 2 +- crates/bevy_ecs/src/bundle.rs | 2 +- crates/bevy_ecs/src/component.rs | 6 +++--- crates/bevy_ecs/src/entity/mod.rs | 2 +- crates/bevy_ecs/src/world/world_cell.rs | 2 +- crates/bevy_gltf/src/loader.rs | 4 ++-- crates/bevy_render/src/extract_resource.rs | 4 ++-- crates/bevy_render/src/mesh/mesh/skinning.rs | 2 +- crates/bevy_scene/src/scene_loader.rs | 2 +- crates/bevy_scene/src/serde.rs | 6 ++++-- crates/bevy_text/src/text2d.rs | 6 +++--- crates/bevy_ui/src/flex/mod.rs | 4 ++-- crates/bevy_ui/src/widget/text.rs | 6 +++--- crates/bevy_window/src/system.rs | 2 +- examples/games/contributors.rs | 2 +- tools/build-example-pages/src/main.rs | 2 +- 17 files changed, 29 insertions(+), 27 deletions(-) diff --git a/crates/bevy_asset/src/asset_server.rs b/crates/bevy_asset/src/asset_server.rs index 85681796efd3b..3b1e2815c61ba 100644 --- a/crates/bevy_asset/src/asset_server.rs +++ b/crates/bevy_asset/src/asset_server.rs @@ -786,7 +786,7 @@ mod test { fn create_dir_and_file(file: impl AsRef) -> tempfile::TempDir { let asset_dir = tempfile::tempdir().unwrap(); - std::fs::write(asset_dir.path().join(file), []).unwrap(); + std::fs::write(asset_dir.path().join(file), &[]).unwrap(); asset_dir } diff --git a/crates/bevy_audio/src/audio_output.rs b/crates/bevy_audio/src/audio_output.rs index b4f942c7c84c9..e378a2c43f4c3 100644 --- a/crates/bevy_audio/src/audio_output.rs +++ b/crates/bevy_audio/src/audio_output.rs @@ -90,7 +90,7 @@ pub fn play_queued_audio_system( mut sinks: ResMut>, ) { if let Some(audio_sources) = audio_sources { - audio_output.try_play_queued(&*audio_sources, &mut *audio, &mut sinks); + audio_output.try_play_queued(&*audio_sources, &mut *audio, &mut *sinks); }; } diff --git a/crates/bevy_ecs/src/bundle.rs b/crates/bevy_ecs/src/bundle.rs index 1993406934a74..8eb7730289f49 100644 --- a/crates/bevy_ecs/src/bundle.rs +++ b/crates/bevy_ecs/src/bundle.rs @@ -483,7 +483,7 @@ impl<'a, 'b> BundleInserter<'a, 'b> { // redundant copies let move_result = self .table - .move_to_superset_unchecked(result.table_row, new_table); + .move_to_superset_unchecked(result.table_row, *new_table); let new_location = new_archetype.allocate(entity, move_result.new_row); self.entities.meta[entity.id as usize].location = new_location; diff --git a/crates/bevy_ecs/src/component.rs b/crates/bevy_ecs/src/component.rs index c59a1e2028737..eb379934efed4 100644 --- a/crates/bevy_ecs/src/component.rs +++ b/crates/bevy_ecs/src/component.rs @@ -294,7 +294,7 @@ impl ComponentDescriptor { is_send_and_sync: true, type_id: Some(TypeId::of::()), layout: Layout::new::(), - drop: needs_drop::().then_some(Self::drop_ptr:: as _), + drop: needs_drop::().then(|| Self::drop_ptr:: as _), } } @@ -331,7 +331,7 @@ impl ComponentDescriptor { is_send_and_sync: true, type_id: Some(TypeId::of::()), layout: Layout::new::(), - drop: needs_drop::().then_some(Self::drop_ptr:: as _), + drop: needs_drop::().then(|| Self::drop_ptr:: as _), } } @@ -342,7 +342,7 @@ impl ComponentDescriptor { is_send_and_sync: false, type_id: Some(TypeId::of::()), layout: Layout::new::(), - drop: needs_drop::().then_some(Self::drop_ptr:: as _), + drop: needs_drop::().then(|| Self::drop_ptr:: as _), } } diff --git a/crates/bevy_ecs/src/entity/mod.rs b/crates/bevy_ecs/src/entity/mod.rs index cdaab44589e9d..80de2bb9fd008 100644 --- a/crates/bevy_ecs/src/entity/mod.rs +++ b/crates/bevy_ecs/src/entity/mod.rs @@ -550,7 +550,7 @@ impl Entities { // If this entity was manually created, then free_cursor might be positive // Returning None handles that case correctly let num_pending = usize::try_from(-free_cursor).ok()?; - (idu < self.meta.len() + num_pending).then_some(Entity { generation: 0, id }) + (idu < self.meta.len() + num_pending).then(|| Entity { generation: 0, id }) } } diff --git a/crates/bevy_ecs/src/world/world_cell.rs b/crates/bevy_ecs/src/world/world_cell.rs index 71357d0c8a358..9db47dfd8c0a2 100644 --- a/crates/bevy_ecs/src/world/world_cell.rs +++ b/crates/bevy_ecs/src/world/world_cell.rs @@ -155,7 +155,7 @@ impl<'w, T> Deref for WorldBorrowMut<'w, T> { impl<'w, T> DerefMut for WorldBorrowMut<'w, T> { fn deref_mut(&mut self) -> &mut Self::Target { - &mut self.value + &mut *self.value } } diff --git a/crates/bevy_gltf/src/loader.rs b/crates/bevy_gltf/src/loader.rs index 9dceef6771eea..2db5126b7743f 100644 --- a/crates/bevy_gltf/src/loader.rs +++ b/crates/bevy_gltf/src/loader.rs @@ -698,7 +698,7 @@ fn load_node( gltf_node: &gltf::Node, world_builder: &mut WorldChildBuilder, load_context: &mut LoadContext, - _buffer_data: &[Vec], + buffer_data: &[Vec], node_index_to_entity_map: &mut HashMap, entity_to_skin_index_map: &mut HashMap, active_camera_found: &mut bool, @@ -894,7 +894,7 @@ fn load_node( &child, parent, load_context, - _buffer_data, + buffer_data, node_index_to_entity_map, entity_to_skin_index_map, active_camera_found, diff --git a/crates/bevy_render/src/extract_resource.rs b/crates/bevy_render/src/extract_resource.rs index 3fa92750421c8..5201021bd4fe0 100644 --- a/crates/bevy_render/src/extract_resource.rs +++ b/crates/bevy_render/src/extract_resource.rs @@ -48,7 +48,7 @@ pub fn extract_resource( ) { if let Some(mut target_resource) = target_resource { if main_resource.is_changed() { - *target_resource = R::extract_resource(&main_resource); + *target_resource = R::extract_resource(&*main_resource); } } else { #[cfg(debug_assertions)] @@ -60,6 +60,6 @@ pub fn extract_resource( std::any::type_name::() ); } - commands.insert_resource(R::extract_resource(&main_resource)); + commands.insert_resource(R::extract_resource(&*main_resource)); } } diff --git a/crates/bevy_render/src/mesh/mesh/skinning.rs b/crates/bevy_render/src/mesh/mesh/skinning.rs index 3c3cef062de06..6d152689069ea 100644 --- a/crates/bevy_render/src/mesh/mesh/skinning.rs +++ b/crates/bevy_render/src/mesh/mesh/skinning.rs @@ -39,6 +39,6 @@ impl From> for SkinnedMeshInverseBindposes { impl Deref for SkinnedMeshInverseBindposes { type Target = [Mat4]; fn deref(&self) -> &Self::Target { - &self.0 + &*self.0 } } diff --git a/crates/bevy_scene/src/scene_loader.rs b/crates/bevy_scene/src/scene_loader.rs index 9054c4cf30ae5..e13b2541eeb13 100644 --- a/crates/bevy_scene/src/scene_loader.rs +++ b/crates/bevy_scene/src/scene_loader.rs @@ -30,7 +30,7 @@ impl AssetLoader for SceneLoader { Box::pin(async move { let mut deserializer = ron::de::Deserializer::from_bytes(bytes)?; let scene_deserializer = SceneDeserializer { - type_registry: &self.type_registry.read(), + type_registry: &*self.type_registry.read(), }; let scene = scene_deserializer.deserialize(&mut deserializer)?; load_context.set_default_asset(LoadedAsset::new(scene)); diff --git a/crates/bevy_scene/src/serde.rs b/crates/bevy_scene/src/serde.rs index 041eafce4f0f0..e55a5fd4b592b 100644 --- a/crates/bevy_scene/src/serde.rs +++ b/crates/bevy_scene/src/serde.rs @@ -72,8 +72,10 @@ impl<'a> Serialize for ComponentsSerializer<'a> { { let mut state = serializer.serialize_seq(Some(self.components.len()))?; for component in self.components { - state - .serialize_element(&ReflectSerializer::new(&**component, &self.registry.read()))?; + state.serialize_element(&ReflectSerializer::new( + &**component, + &*self.registry.read(), + ))?; } state.end() } diff --git a/crates/bevy_text/src/text2d.rs b/crates/bevy_text/src/text2d.rs index f3e4693a1aca1..2b5cb821b1cc5 100644 --- a/crates/bevy_text/src/text2d.rs +++ b/crates/bevy_text/src/text2d.rs @@ -187,9 +187,9 @@ pub fn update_text2d_layout( scale_factor, text.alignment, text_bounds, - &mut font_atlas_set_storage, - &mut texture_atlases, - &mut textures, + &mut *font_atlas_set_storage, + &mut *texture_atlases, + &mut *textures, ) { Err(TextError::NoSuchFont) => { // There was an error processing the text layout, let's add this entity to the diff --git a/crates/bevy_ui/src/flex/mod.rs b/crates/bevy_ui/src/flex/mod.rs index ba49e6572b9d1..952fb54606dd2 100644 --- a/crates/bevy_ui/src/flex/mod.rs +++ b/crates/bevy_ui/src/flex/mod.rs @@ -229,9 +229,9 @@ pub fn flex_node_system( let scale_factor = logical_to_physical_factor * ui_scale.scale; if scale_factor_events.iter().next_back().is_some() || ui_scale.is_changed() { - update_changed(&mut flex_surface, scale_factor, full_node_query); + update_changed(&mut *flex_surface, scale_factor, full_node_query); } else { - update_changed(&mut flex_surface, scale_factor, node_query); + update_changed(&mut *flex_surface, scale_factor, node_query); } fn update_changed( diff --git a/crates/bevy_ui/src/widget/text.rs b/crates/bevy_ui/src/widget/text.rs index 584775f4b5dab..77ed556a471c0 100644 --- a/crates/bevy_ui/src/widget/text.rs +++ b/crates/bevy_ui/src/widget/text.rs @@ -113,9 +113,9 @@ pub fn text_system( scale_factor, text.alignment, node_size, - &mut font_atlas_set_storage, - &mut texture_atlases, - &mut textures, + &mut *font_atlas_set_storage, + &mut *texture_atlases, + &mut *textures, ) { Err(TextError::NoSuchFont) => { // There was an error processing the text layout, let's add this entity to the diff --git a/crates/bevy_window/src/system.rs b/crates/bevy_window/src/system.rs index 6cb17b877ab8f..45a374fe2e09d 100644 --- a/crates/bevy_window/src/system.rs +++ b/crates/bevy_window/src/system.rs @@ -44,7 +44,7 @@ pub fn close_on_esc( ) { // TODO: Track this in e.g. a resource to ensure consistent behaviour across similar systems for event in focused_events.iter() { - *focused = event.focused.then_some(event.id); + *focused = event.focused.then(|| event.id); } if let Some(focused) = &*focused { diff --git a/examples/games/contributors.rs b/examples/games/contributors.rs index 6e2688b3d9aca..f53670336022a 100644 --- a/examples/games/contributors.rs +++ b/examples/games/contributors.rs @@ -324,7 +324,7 @@ fn contributors() -> Result { let manifest_dir = std::env::var("CARGO_MANIFEST_DIR").map_err(LoadContributorsError::Var)?; let mut cmd = std::process::Command::new("git") - .args(["--no-pager", "log", "--pretty=format:%an"]) + .args(&["--no-pager", "log", "--pretty=format:%an"]) .current_dir(manifest_dir) .stdout(Stdio::piped()) .spawn() diff --git a/tools/build-example-pages/src/main.rs b/tools/build-example-pages/src/main.rs index f480cc788a29b..b64530a97bc9c 100644 --- a/tools/build-example-pages/src/main.rs +++ b/tools/build-example-pages/src/main.rs @@ -112,7 +112,7 @@ fn parse_examples(panic_on_missing: bool) -> Vec { .get(&technical_name) .and_then(|metadata| metadata.get("hidden")) .and_then(|hidden| hidden.as_bool()) - .and_then(|hidden| hidden.then_some(())) + .and_then(|hidden| hidden.then(|| ())) .is_some() { return None;