Add documentation to QueryCombinationIter (#5739)
				
					
				
			# Objective - Document `QueryCombinationIter` ## Solution - Describe the item, add usage and examples - Copy notes about the number of query items generated from the corresponding query methods (they will be removed in #5742 ([motivation])) ## Additional notes - Derived from #4989 [motivation]: https://github.com/bevyengine/bevy/pull/4989#issuecomment-1208421496
This commit is contained in:
		
							parent
							
								
									584d855fd1
								
							
						
					
					
						commit
						5597fc54d2
					
				| @ -214,6 +214,59 @@ where | ||||
| { | ||||
| } | ||||
| 
 | ||||
| /// An iterator over `K`-sized combinations of query items without repetition.
 | ||||
| ///
 | ||||
| /// In this context, a combination is an unordered subset of `K` elements.
 | ||||
| /// The number of combinations depend on how `K` relates to the number of entities matching the [`Query`] (called `N`):
 | ||||
| /// - if `K = N`, only one combination exists,
 | ||||
| /// - if `K < N`, there are <sub>N</sub>C<sub>K</sub> combinations (see the [performance section] of `Query`),
 | ||||
| /// - if `K > N`, there are no combinations.
 | ||||
| ///
 | ||||
| /// # Usage
 | ||||
| ///
 | ||||
| /// This type is returned by calling [`Query::iter_combinations`] or [`Query::iter_combinations_mut`].
 | ||||
| ///
 | ||||
| /// It implements [`Iterator`] only if it iterates over read-only query items ([learn more]).
 | ||||
| ///
 | ||||
| /// In the case of mutable query items, it can be iterated by calling [`fetch_next`] in a `while let` loop.
 | ||||
| ///
 | ||||
| /// # Examples
 | ||||
| ///
 | ||||
| /// The following example shows how to traverse the iterator when the query items are read-only.
 | ||||
| ///
 | ||||
| /// ```
 | ||||
| /// # use bevy_ecs::prelude::*;
 | ||||
| /// # #[derive(Component)]
 | ||||
| /// # struct ComponentA;
 | ||||
| /// #
 | ||||
| /// fn some_system(query: Query<&ComponentA>) {
 | ||||
| ///     for [a1, a2] in query.iter_combinations() {
 | ||||
| ///         // ...
 | ||||
| ///     }
 | ||||
| /// }
 | ||||
| /// ```
 | ||||
| ///
 | ||||
| /// The following example shows how `fetch_next` should be called with a `while let` loop to traverse the iterator when the query items are mutable.
 | ||||
| ///
 | ||||
| /// ```
 | ||||
| /// # use bevy_ecs::prelude::*;
 | ||||
| /// # #[derive(Component)]
 | ||||
| /// # struct ComponentA;
 | ||||
| /// #
 | ||||
| /// fn some_system(mut query: Query<&mut ComponentA>) {
 | ||||
| ///     let mut combinations = query.iter_combinations_mut();
 | ||||
| ///     while let Some([a1, a2]) = combinations.fetch_next() {
 | ||||
| ///         // ...
 | ||||
| ///     }
 | ||||
| /// }
 | ||||
| /// ```
 | ||||
| ///
 | ||||
| /// [`fetch_next`]: Self::fetch_next
 | ||||
| /// [learn more]: Self#impl-Iterator
 | ||||
| /// [performance section]: crate::system::Query#performance
 | ||||
| /// [`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> { | ||||
|     tables: &'w Tables, | ||||
|     archetypes: &'w Archetypes, | ||||
|  | ||||
		Loading…
	
		Reference in New Issue
	
	Block a user
	 Federico Rinaldi
						Federico Rinaldi