simple Debug impls for query iterators (#13476)
# Objective The current query iterators cannot be used in positions with a `Debug` bound. F.e. when they are packaged in `Result` in the error position, `expect` cannot be called on them. Required for `QueryManyIter::entities_all_unique` in #13477. ## Solution Add simple `Debug` impls that print the query iterator names. ## Changelog `QueryIter`, `QueryManyIter`, `QueryCombinationIter`, and `QuerySortedIter` now implement `Debug`.
This commit is contained in:
parent
dda7a744cf
commit
c4cedb12c8
@ -6,7 +6,14 @@ use crate::{
|
||||
storage::{Table, TableRow, Tables},
|
||||
world::unsafe_world_cell::UnsafeWorldCell,
|
||||
};
|
||||
use std::{borrow::Borrow, cmp::Ordering, iter::FusedIterator, mem::MaybeUninit, ops::Range};
|
||||
use std::{
|
||||
borrow::Borrow,
|
||||
cmp::Ordering,
|
||||
fmt::{self, Debug, Formatter},
|
||||
iter::FusedIterator,
|
||||
mem::MaybeUninit,
|
||||
ops::Range,
|
||||
};
|
||||
|
||||
use super::{QueryData, QueryFilter, ReadOnlyQueryData};
|
||||
|
||||
@ -857,6 +864,12 @@ impl<'w, 's, D: QueryData, F: QueryFilter> Iterator for QueryIter<'w, 's, D, F>
|
||||
// This is correct as [`QueryIter`] always returns `None` once exhausted.
|
||||
impl<'w, 's, D: QueryData, F: QueryFilter> FusedIterator for QueryIter<'w, 's, D, F> {}
|
||||
|
||||
impl<'w, 's, D: QueryData, F: QueryFilter> Debug for QueryIter<'w, 's, D, F> {
|
||||
fn fmt(&self, f: &mut Formatter<'_>) -> fmt::Result {
|
||||
f.debug_struct("QueryIter").finish()
|
||||
}
|
||||
}
|
||||
|
||||
/// An [`Iterator`] over sorted query results of a [`Query`](crate::system::Query).
|
||||
///
|
||||
/// This struct is created by the [`QueryIter::sort`], [`QueryIter::sort_unstable`],
|
||||
@ -985,6 +998,14 @@ where
|
||||
{
|
||||
}
|
||||
|
||||
impl<'w, 's, D: QueryData, F: QueryFilter, I: Iterator<Item = Entity>> Debug
|
||||
for QuerySortedIter<'w, 's, D, F, I>
|
||||
{
|
||||
fn fmt(&self, f: &mut Formatter<'_>) -> fmt::Result {
|
||||
f.debug_struct("QuerySortedIter").finish()
|
||||
}
|
||||
}
|
||||
|
||||
/// An [`Iterator`] over the query items generated from an iterator of [`Entity`]s.
|
||||
///
|
||||
/// Items are returned in the order of the provided iterator.
|
||||
@ -1131,6 +1152,15 @@ where
|
||||
{
|
||||
}
|
||||
|
||||
impl<'w, 's, D: QueryData, F: QueryFilter, I: Iterator> Debug for QueryManyIter<'w, 's, D, F, I>
|
||||
where
|
||||
I::Item: Borrow<Entity>,
|
||||
{
|
||||
fn fmt(&self, f: &mut Formatter<'_>) -> fmt::Result {
|
||||
f.debug_struct("QueryManyIter").finish()
|
||||
}
|
||||
}
|
||||
|
||||
/// An iterator over `K`-sized combinations of query items without repetition.
|
||||
///
|
||||
/// A combination is an arrangement of a collection of items where order does not matter.
|
||||
@ -1364,6 +1394,14 @@ impl<'w, 's, D: ReadOnlyQueryData, F: QueryFilter, const K: usize> FusedIterator
|
||||
{
|
||||
}
|
||||
|
||||
impl<'w, 's, D: QueryData, F: QueryFilter, const K: usize> Debug
|
||||
for QueryCombinationIter<'w, 's, D, F, K>
|
||||
{
|
||||
fn fmt(&self, f: &mut Formatter<'_>) -> fmt::Result {
|
||||
f.debug_struct("QueryCombinationIter").finish()
|
||||
}
|
||||
}
|
||||
|
||||
struct QueryIterationCursor<'w, 's, D: QueryData, F: QueryFilter> {
|
||||
storage_id_iter: std::slice::Iter<'s, StorageId>,
|
||||
table_entities: &'w [Entity],
|
||||
|
||||
Loading…
Reference in New Issue
Block a user