Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Remove Query::to_readonly #5866

Closed
wants to merge 2 commits into from
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
124 changes: 0 additions & 124 deletions crates/bevy_ecs/src/system/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -956,130 +956,6 @@ mod tests {
);
}
}

#[test]
fn convert_mut_to_immut() {
{
let mut world = World::new();

fn mutable_query(mut query: Query<&mut A>) {
for _ in &mut query {}

immutable_query(query.to_readonly());
}

fn immutable_query(_: Query<&A>) {}

let mut sys = IntoSystem::into_system(mutable_query);
sys.initialize(&mut world);
}

{
let mut world = World::new();

fn mutable_query(mut query: Query<Option<&mut A>>) {
for _ in &mut query {}

immutable_query(query.to_readonly());
}

fn immutable_query(_: Query<Option<&A>>) {}

let mut sys = IntoSystem::into_system(mutable_query);
sys.initialize(&mut world);
}

{
let mut world = World::new();

fn mutable_query(mut query: Query<(&mut A, &B)>) {
for _ in &mut query {}

immutable_query(query.to_readonly());
}

fn immutable_query(_: Query<(&A, &B)>) {}

let mut sys = IntoSystem::into_system(mutable_query);
sys.initialize(&mut world);
}

{
let mut world = World::new();

fn mutable_query(mut query: Query<(&mut A, &mut B)>) {
for _ in &mut query {}

immutable_query(query.to_readonly());
}

fn immutable_query(_: Query<(&A, &B)>) {}

let mut sys = IntoSystem::into_system(mutable_query);
sys.initialize(&mut world);
}

{
let mut world = World::new();

fn mutable_query(mut query: Query<(&mut A, &mut B), With<C>>) {
for _ in &mut query {}

immutable_query(query.to_readonly());
}

fn immutable_query(_: Query<(&A, &B), With<C>>) {}

let mut sys = IntoSystem::into_system(mutable_query);
sys.initialize(&mut world);
}

{
let mut world = World::new();

fn mutable_query(mut query: Query<(&mut A, &mut B), Without<C>>) {
for _ in &mut query {}

immutable_query(query.to_readonly());
}

fn immutable_query(_: Query<(&A, &B), Without<C>>) {}

let mut sys = IntoSystem::into_system(mutable_query);
sys.initialize(&mut world);
}

{
let mut world = World::new();

fn mutable_query(mut query: Query<(&mut A, &mut B), Added<C>>) {
for _ in &mut query {}

immutable_query(query.to_readonly());
}

fn immutable_query(_: Query<(&A, &B), Added<C>>) {}

let mut sys = IntoSystem::into_system(mutable_query);
sys.initialize(&mut world);
}

{
let mut world = World::new();

fn mutable_query(mut query: Query<(&mut A, &mut B), Changed<C>>) {
for _ in &mut query {}

immutable_query(query.to_readonly());
}

fn immutable_query(_: Query<(&A, &B), Changed<C>>) {}

let mut sys = IntoSystem::into_system(mutable_query);
sys.initialize(&mut world);
}
}

#[test]
fn update_archetype_component_access_works() {
use std::collections::HashSet;
Expand Down
18 changes: 0 additions & 18 deletions crates/bevy_ecs/src/system/query.rs
Original file line number Diff line number Diff line change
Expand Up @@ -302,24 +302,6 @@ impl<'w, 's, Q: WorldQuery, F: WorldQuery> Query<'w, 's, Q, F> {
}
}

/// Returns another `Query` from this that fetches the read-only version of the query items.
///
/// For example, `Query<(&mut A, &B, &mut C), With<D>>` will become `Query<(&A, &B, &C), With<D>>`.
/// This can be useful when working around the borrow checker,
/// or reusing functionality between systems via functions that accept query types.
pub fn to_readonly(&self) -> Query<'_, 's, Q::ReadOnly, F::ReadOnly> {
let new_state = self.state.as_readonly();
// SAFETY: This is memory safe because it turns the query immutable.
unsafe {
Query::new(
self.world,
new_state,
self.last_change_tick,
self.change_tick,
)
}
}

/// Returns an [`Iterator`] over the read-only query items.
///
/// # Example
Expand Down
75 changes: 0 additions & 75 deletions crates/bevy_ecs_compile_fail_tests/tests/ui/query_to_readonly.rs

This file was deleted.

This file was deleted.