pub trait Fetch<'world, 'state> {
type Item;
type State: FetchState;
const IS_DENSE: bool;
unsafe fn init(
world: &World,
state: &Self::State,
last_change_tick: u32,
change_tick: u32
) -> Self;
unsafe fn set_archetype(
&mut self,
state: &Self::State,
archetype: &Archetype,
tables: &Tables
);
unsafe fn set_table(&mut self, state: &Self::State, table: &Table);
unsafe fn archetype_fetch(&mut self, archetype_index: usize) -> Self::Item;
unsafe fn table_fetch(&mut self, table_row: usize) -> Self::Item;
}
Expand description
Types that implement this trait are responsible for fetching query items from tables or
archetypes.
Every type that implements WorldQuery
have their associated WorldQuery::Fetch
and
WorldQuery::State
types that are essential for fetching component data.
Returns true if (and only if) every table of every archetype matched by this Fetch contains
all of the matched components. This is used to select a more efficient “table iterator”
for “dense” queries. If this returns true, Fetch::set_table
and Fetch::table_fetch
will be called for iterators. If this returns false, Fetch::set_archetype
and
Fetch::archetype_fetch
will be called for iterators.
Creates a new instance of this fetch.
state
must have been initialized (via FetchState::init
) using the same world
passed
in to this function.
Adjusts internal state to account for the next Archetype
. This will always be called on
archetypes that match this Fetch
.
archetype
and tables
must be from the World
Fetch::init
was called on. state
must be the Self::State
this was initialized with.
Adjusts internal state to account for the next Table
. This will always be called on tables
that match this Fetch
.
table
must be from the World
Fetch::init
was called on. state
must be the
Self::State
this was initialized with.
Fetch Self::Item
for the given table_row
in the current Table
. This must always be
called after Fetch::set_table
with a table_row
in the range of the current Table
Must always be called after Fetch::set_table
. table_row
must be in the range of the
current table
impl<'w, 's, F0, F1, F2> Fetch<'w, 's> for (F0, F1, F2) where
F0: Fetch<'w, 's>,
F1: Fetch<'w, 's>,
F2: Fetch<'w, 's>,
impl<'w, 's, F0, F1, F2, F3, F4, F5, F6, F7, F8, F9, F10, F11> Fetch<'w, 's> for (F0, F1, F2, F3, F4, F5, F6, F7, F8, F9, F10, F11) where
F0: Fetch<'w, 's>,
F1: Fetch<'w, 's>,
F2: Fetch<'w, 's>,
F3: Fetch<'w, 's>,
F4: Fetch<'w, 's>,
F5: Fetch<'w, 's>,
F6: Fetch<'w, 's>,
F7: Fetch<'w, 's>,
F8: Fetch<'w, 's>,
F9: Fetch<'w, 's>,
F10: Fetch<'w, 's>,
F11: Fetch<'w, 's>,
impl<'w, 's, F0, F1, F2, F3, F4, F5, F6, F7, F8, F9, F10, F11, F12, F13, F14> Fetch<'w, 's> for (F0, F1, F2, F3, F4, F5, F6, F7, F8, F9, F10, F11, F12, F13, F14) where
F0: Fetch<'w, 's>,
F1: Fetch<'w, 's>,
F2: Fetch<'w, 's>,
F3: Fetch<'w, 's>,
F4: Fetch<'w, 's>,
F5: Fetch<'w, 's>,
F6: Fetch<'w, 's>,
F7: Fetch<'w, 's>,
F8: Fetch<'w, 's>,
F9: Fetch<'w, 's>,
F10: Fetch<'w, 's>,
F11: Fetch<'w, 's>,
F12: Fetch<'w, 's>,
F13: Fetch<'w, 's>,
F14: Fetch<'w, 's>,
impl<'w, 's, F0, F1, F2, F3, F4, F5, F6, F7, F8> Fetch<'w, 's> for (F0, F1, F2, F3, F4, F5, F6, F7, F8) where
F0: Fetch<'w, 's>,
F1: Fetch<'w, 's>,
F2: Fetch<'w, 's>,
F3: Fetch<'w, 's>,
F4: Fetch<'w, 's>,
F5: Fetch<'w, 's>,
F6: Fetch<'w, 's>,
F7: Fetch<'w, 's>,
F8: Fetch<'w, 's>,
impl<'w, 's, F0, F1, F2, F3, F4, F5, F6, F7> Fetch<'w, 's> for (F0, F1, F2, F3, F4, F5, F6, F7) where
F0: Fetch<'w, 's>,
F1: Fetch<'w, 's>,
F2: Fetch<'w, 's>,
F3: Fetch<'w, 's>,
F4: Fetch<'w, 's>,
F5: Fetch<'w, 's>,
F6: Fetch<'w, 's>,
F7: Fetch<'w, 's>,
impl<'w, 's, F0, F1, F2, F3> Fetch<'w, 's> for (F0, F1, F2, F3) where
F0: Fetch<'w, 's>,
F1: Fetch<'w, 's>,
F2: Fetch<'w, 's>,
F3: Fetch<'w, 's>,
impl<'w, 's, F0, F1, F2, F3, F4, F5> Fetch<'w, 's> for (F0, F1, F2, F3, F4, F5) where
F0: Fetch<'w, 's>,
F1: Fetch<'w, 's>,
F2: Fetch<'w, 's>,
F3: Fetch<'w, 's>,
F4: Fetch<'w, 's>,
F5: Fetch<'w, 's>,
impl<'w, 's, F0, F1, F2, F3, F4, F5, F6> Fetch<'w, 's> for (F0, F1, F2, F3, F4, F5, F6) where
F0: Fetch<'w, 's>,
F1: Fetch<'w, 's>,
F2: Fetch<'w, 's>,
F3: Fetch<'w, 's>,
F4: Fetch<'w, 's>,
F5: Fetch<'w, 's>,
F6: Fetch<'w, 's>,
impl<'w, 's, F0, F1, F2, F3, F4, F5, F6, F7, F8, F9> Fetch<'w, 's> for (F0, F1, F2, F3, F4, F5, F6, F7, F8, F9) where
F0: Fetch<'w, 's>,
F1: Fetch<'w, 's>,
F2: Fetch<'w, 's>,
F3: Fetch<'w, 's>,
F4: Fetch<'w, 's>,
F5: Fetch<'w, 's>,
F6: Fetch<'w, 's>,
F7: Fetch<'w, 's>,
F8: Fetch<'w, 's>,
F9: Fetch<'w, 's>,
impl<'w, 's, F0, F1, F2, F3, F4, F5, F6, F7, F8, F9, F10> Fetch<'w, 's> for (F0, F1, F2, F3, F4, F5, F6, F7, F8, F9, F10) where
F0: Fetch<'w, 's>,
F1: Fetch<'w, 's>,
F2: Fetch<'w, 's>,
F3: Fetch<'w, 's>,
F4: Fetch<'w, 's>,
F5: Fetch<'w, 's>,
F6: Fetch<'w, 's>,
F7: Fetch<'w, 's>,
F8: Fetch<'w, 's>,
F9: Fetch<'w, 's>,
F10: Fetch<'w, 's>,
impl<'w, 's, F0, F1> Fetch<'w, 's> for (F0, F1) where
F0: Fetch<'w, 's>,
F1: Fetch<'w, 's>,
impl<'w, 's, F0> Fetch<'w, 's> for (F0,) where
F0: Fetch<'w, 's>,
impl<'w, 's, F0, F1, F2, F3, F4, F5, F6, F7, F8, F9, F10, F11, F12, F13> Fetch<'w, 's> for (F0, F1, F2, F3, F4, F5, F6, F7, F8, F9, F10, F11, F12, F13) where
F0: Fetch<'w, 's>,
F1: Fetch<'w, 's>,
F2: Fetch<'w, 's>,
F3: Fetch<'w, 's>,
F4: Fetch<'w, 's>,
F5: Fetch<'w, 's>,
F6: Fetch<'w, 's>,
F7: Fetch<'w, 's>,
F8: Fetch<'w, 's>,
F9: Fetch<'w, 's>,
F10: Fetch<'w, 's>,
F11: Fetch<'w, 's>,
F12: Fetch<'w, 's>,
F13: Fetch<'w, 's>,
impl<'w, 's, F0, F1, F2, F3, F4, F5, F6, F7, F8, F9, F10, F11, F12> Fetch<'w, 's> for (F0, F1, F2, F3, F4, F5, F6, F7, F8, F9, F10, F11, F12) where
F0: Fetch<'w, 's>,
F1: Fetch<'w, 's>,
F2: Fetch<'w, 's>,
F3: Fetch<'w, 's>,
F4: Fetch<'w, 's>,
F5: Fetch<'w, 's>,
F6: Fetch<'w, 's>,
F7: Fetch<'w, 's>,
F8: Fetch<'w, 's>,
F9: Fetch<'w, 's>,
F10: Fetch<'w, 's>,
F11: Fetch<'w, 's>,
F12: Fetch<'w, 's>,
impl<'w, 's, F0, F1, F2, F3, F4> Fetch<'w, 's> for (F0, F1, F2, F3, F4) where
F0: Fetch<'w, 's>,
F1: Fetch<'w, 's>,
F2: Fetch<'w, 's>,
F3: Fetch<'w, 's>,
F4: Fetch<'w, 's>,
impl<'w, 's, F0, F1> Fetch<'w, 's> for AnyOf<((F0, bool), (F1, bool))> where
F0: Fetch<'w, 's>,
F1: Fetch<'w, 's>,
impl<'w, 's, F0, F1, F2> Fetch<'w, 's> for AnyOf<((F0, bool), (F1, bool), (F2, bool))> where
F0: Fetch<'w, 's>,
F1: Fetch<'w, 's>,
F2: Fetch<'w, 's>,
impl<'w, 's, F0, F1, F2> Fetch<'w, 's> for Or<(OrFetch<F0>, OrFetch<F1>, OrFetch<F2>)> where
F0: FilterFetch,
F1: FilterFetch,
F2: FilterFetch,
impl<'w, 's, F0, F1, F2, F3> Fetch<'w, 's> for AnyOf<((F0, bool), (F1, bool), (F2, bool), (F3, bool))> where
F0: Fetch<'w, 's>,
F1: Fetch<'w, 's>,
F2: Fetch<'w, 's>,
F3: Fetch<'w, 's>,
impl<'w, 's, F0, F1, F2, F3> Fetch<'w, 's> for Or<(OrFetch<F0>, OrFetch<F1>, OrFetch<F2>, OrFetch<F3>)> where
F0: FilterFetch,
F1: FilterFetch,
F2: FilterFetch,
F3: FilterFetch,
impl<'w, 's, F0, F1, F2, F3, F4> Fetch<'w, 's> for AnyOf<((F0, bool), (F1, bool), (F2, bool), (F3, bool), (F4, bool))> where
F0: Fetch<'w, 's>,
F1: Fetch<'w, 's>,
F2: Fetch<'w, 's>,
F3: Fetch<'w, 's>,
F4: Fetch<'w, 's>,
impl<'w, 's, F0, F1, F2, F3, F4> Fetch<'w, 's> for Or<(OrFetch<F0>, OrFetch<F1>, OrFetch<F2>, OrFetch<F3>, OrFetch<F4>)> where
F0: FilterFetch,
F1: FilterFetch,
F2: FilterFetch,
F3: FilterFetch,
F4: FilterFetch,
impl<'w, 's, F0, F1, F2, F3, F4, F5> Fetch<'w, 's> for AnyOf<((F0, bool), (F1, bool), (F2, bool), (F3, bool), (F4, bool), (F5, bool))> where
F0: Fetch<'w, 's>,
F1: Fetch<'w, 's>,
F2: Fetch<'w, 's>,
F3: Fetch<'w, 's>,
F4: Fetch<'w, 's>,
F5: Fetch<'w, 's>,
impl<'w, 's, F0, F1, F2, F3, F4, F5> Fetch<'w, 's> for Or<(OrFetch<F0>, OrFetch<F1>, OrFetch<F2>, OrFetch<F3>, OrFetch<F4>, OrFetch<F5>)> where
F0: FilterFetch,
F1: FilterFetch,
F2: FilterFetch,
F3: FilterFetch,
F4: FilterFetch,
F5: FilterFetch,
impl<'w, 's, F0, F1, F2, F3, F4, F5, F6> Fetch<'w, 's> for AnyOf<((F0, bool), (F1, bool), (F2, bool), (F3, bool), (F4, bool), (F5, bool), (F6, bool))> where
F0: Fetch<'w, 's>,
F1: Fetch<'w, 's>,
F2: Fetch<'w, 's>,
F3: Fetch<'w, 's>,
F4: Fetch<'w, 's>,
F5: Fetch<'w, 's>,
F6: Fetch<'w, 's>,
impl<'w, 's, F0, F1, F2, F3, F4, F5, F6> Fetch<'w, 's> for Or<(OrFetch<F0>, OrFetch<F1>, OrFetch<F2>, OrFetch<F3>, OrFetch<F4>, OrFetch<F5>, OrFetch<F6>)> where
F0: FilterFetch,
F1: FilterFetch,
F2: FilterFetch,
F3: FilterFetch,
F4: FilterFetch,
F5: FilterFetch,
F6: FilterFetch,
impl<'w, 's, F0, F1, F2, F3, F4, F5, F6, F7> Fetch<'w, 's> for AnyOf<((F0, bool), (F1, bool), (F2, bool), (F3, bool), (F4, bool), (F5, bool), (F6, bool), (F7, bool))> where
F0: Fetch<'w, 's>,
F1: Fetch<'w, 's>,
F2: Fetch<'w, 's>,
F3: Fetch<'w, 's>,
F4: Fetch<'w, 's>,
F5: Fetch<'w, 's>,
F6: Fetch<'w, 's>,
F7: Fetch<'w, 's>,
impl<'w, 's, F0, F1, F2, F3, F4, F5, F6, F7> Fetch<'w, 's> for Or<(OrFetch<F0>, OrFetch<F1>, OrFetch<F2>, OrFetch<F3>, OrFetch<F4>, OrFetch<F5>, OrFetch<F6>, OrFetch<F7>)> where
F0: FilterFetch,
F1: FilterFetch,
F2: FilterFetch,
F3: FilterFetch,
F4: FilterFetch,
F5: FilterFetch,
F6: FilterFetch,
F7: FilterFetch,
impl<'w, 's, F0, F1, F2, F3, F4, F5, F6, F7, F8> Fetch<'w, 's> for AnyOf<((F0, bool), (F1, bool), (F2, bool), (F3, bool), (F4, bool), (F5, bool), (F6, bool), (F7, bool), (F8, bool))> where
F0: Fetch<'w, 's>,
F1: Fetch<'w, 's>,
F2: Fetch<'w, 's>,
F3: Fetch<'w, 's>,
F4: Fetch<'w, 's>,
F5: Fetch<'w, 's>,
F6: Fetch<'w, 's>,
F7: Fetch<'w, 's>,
F8: Fetch<'w, 's>,
impl<'w, 's, F0, F1, F2, F3, F4, F5, F6, F7, F8> Fetch<'w, 's> for Or<(OrFetch<F0>, OrFetch<F1>, OrFetch<F2>, OrFetch<F3>, OrFetch<F4>, OrFetch<F5>, OrFetch<F6>, OrFetch<F7>, OrFetch<F8>)> where
F0: FilterFetch,
F1: FilterFetch,
F2: FilterFetch,
F3: FilterFetch,
F4: FilterFetch,
F5: FilterFetch,
F6: FilterFetch,
F7: FilterFetch,
F8: FilterFetch,
impl<'w, 's, F0, F1, F2, F3, F4, F5, F6, F7, F8, F9> Fetch<'w, 's> for AnyOf<((F0, bool), (F1, bool), (F2, bool), (F3, bool), (F4, bool), (F5, bool), (F6, bool), (F7, bool), (F8, bool), (F9, bool))> where
F0: Fetch<'w, 's>,
F1: Fetch<'w, 's>,
F2: Fetch<'w, 's>,
F3: Fetch<'w, 's>,
F4: Fetch<'w, 's>,
F5: Fetch<'w, 's>,
F6: Fetch<'w, 's>,
F7: Fetch<'w, 's>,
F8: Fetch<'w, 's>,
F9: Fetch<'w, 's>,
impl<'w, 's, F0, F1, F2, F3, F4, F5, F6, F7, F8, F9> Fetch<'w, 's> for Or<(OrFetch<F0>, OrFetch<F1>, OrFetch<F2>, OrFetch<F3>, OrFetch<F4>, OrFetch<F5>, OrFetch<F6>, OrFetch<F7>, OrFetch<F8>, OrFetch<F9>)> where
F0: FilterFetch,
F1: FilterFetch,
F2: FilterFetch,
F3: FilterFetch,
F4: FilterFetch,
F5: FilterFetch,
F6: FilterFetch,
F7: FilterFetch,
F8: FilterFetch,
F9: FilterFetch,
impl<'w, 's, F0, F1, F2, F3, F4, F5, F6, F7, F8, F9, F10> Fetch<'w, 's> for AnyOf<((F0, bool), (F1, bool), (F2, bool), (F3, bool), (F4, bool), (F5, bool), (F6, bool), (F7, bool), (F8, bool), (F9, bool), (F10, bool))> where
F0: Fetch<'w, 's>,
F1: Fetch<'w, 's>,
F2: Fetch<'w, 's>,
F3: Fetch<'w, 's>,
F4: Fetch<'w, 's>,
F5: Fetch<'w, 's>,
F6: Fetch<'w, 's>,
F7: Fetch<'w, 's>,
F8: Fetch<'w, 's>,
F9: Fetch<'w, 's>,
F10: Fetch<'w, 's>,
impl<'w, 's, F0, F1, F2, F3, F4, F5, F6, F7, F8, F9, F10> Fetch<'w, 's> for Or<(OrFetch<F0>, OrFetch<F1>, OrFetch<F2>, OrFetch<F3>, OrFetch<F4>, OrFetch<F5>, OrFetch<F6>, OrFetch<F7>, OrFetch<F8>, OrFetch<F9>, OrFetch<F10>)> where
F0: FilterFetch,
F1: FilterFetch,
F2: FilterFetch,
F3: FilterFetch,
F4: FilterFetch,
F5: FilterFetch,
F6: FilterFetch,
F7: FilterFetch,
F8: FilterFetch,
F9: FilterFetch,
F10: FilterFetch,
impl<'w, 's, F0, F1, F2, F3, F4, F5, F6, F7, F8, F9, F10, F11> Fetch<'w, 's> for AnyOf<((F0, bool), (F1, bool), (F2, bool), (F3, bool), (F4, bool), (F5, bool), (F6, bool), (F7, bool), (F8, bool), (F9, bool), (F10, bool), (F11, bool))> where
F0: Fetch<'w, 's>,
F1: Fetch<'w, 's>,
F2: Fetch<'w, 's>,
F3: Fetch<'w, 's>,
F4: Fetch<'w, 's>,
F5: Fetch<'w, 's>,
F6: Fetch<'w, 's>,
F7: Fetch<'w, 's>,
F8: Fetch<'w, 's>,
F9: Fetch<'w, 's>,
F10: Fetch<'w, 's>,
F11: Fetch<'w, 's>,
impl<'w, 's, F0, F1, F2, F3, F4, F5, F6, F7, F8, F9, F10, F11> Fetch<'w, 's> for Or<(OrFetch<F0>, OrFetch<F1>, OrFetch<F2>, OrFetch<F3>, OrFetch<F4>, OrFetch<F5>, OrFetch<F6>, OrFetch<F7>, OrFetch<F8>, OrFetch<F9>, OrFetch<F10>, OrFetch<F11>)> where
F0: FilterFetch,
F1: FilterFetch,
F2: FilterFetch,
F3: FilterFetch,
F4: FilterFetch,
F5: FilterFetch,
F6: FilterFetch,
F7: FilterFetch,
F8: FilterFetch,
F9: FilterFetch,
F10: FilterFetch,
F11: FilterFetch,
impl<'w, 's, F0, F1, F2, F3, F4, F5, F6, F7, F8, F9, F10, F11, F12> Fetch<'w, 's> for AnyOf<((F0, bool), (F1, bool), (F2, bool), (F3, bool), (F4, bool), (F5, bool), (F6, bool), (F7, bool), (F8, bool), (F9, bool), (F10, bool), (F11, bool), (F12, bool))> where
F0: Fetch<'w, 's>,
F1: Fetch<'w, 's>,
F2: Fetch<'w, 's>,
F3: Fetch<'w, 's>,
F4: Fetch<'w, 's>,
F5: Fetch<'w, 's>,
F6: Fetch<'w, 's>,
F7: Fetch<'w, 's>,
F8: Fetch<'w, 's>,
F9: Fetch<'w, 's>,
F10: Fetch<'w, 's>,
F11: Fetch<'w, 's>,
F12: Fetch<'w, 's>,
impl<'w, 's, F0, F1, F2, F3, F4, F5, F6, F7, F8, F9, F10, F11, F12> Fetch<'w, 's> for Or<(OrFetch<F0>, OrFetch<F1>, OrFetch<F2>, OrFetch<F3>, OrFetch<F4>, OrFetch<F5>, OrFetch<F6>, OrFetch<F7>, OrFetch<F8>, OrFetch<F9>, OrFetch<F10>, OrFetch<F11>, OrFetch<F12>)> where
F0: FilterFetch,
F1: FilterFetch,
F2: FilterFetch,
F3: FilterFetch,
F4: FilterFetch,
F5: FilterFetch,
F6: FilterFetch,
F7: FilterFetch,
F8: FilterFetch,
F9: FilterFetch,
F10: FilterFetch,
F11: FilterFetch,
F12: FilterFetch,
impl<'w, 's, F0, F1, F2, F3, F4, F5, F6, F7, F8, F9, F10, F11, F12, F13> Fetch<'w, 's> for AnyOf<((F0, bool), (F1, bool), (F2, bool), (F3, bool), (F4, bool), (F5, bool), (F6, bool), (F7, bool), (F8, bool), (F9, bool), (F10, bool), (F11, bool), (F12, bool), (F13, bool))> where
F0: Fetch<'w, 's>,
F1: Fetch<'w, 's>,
F2: Fetch<'w, 's>,
F3: Fetch<'w, 's>,
F4: Fetch<'w, 's>,
F5: Fetch<'w, 's>,
F6: Fetch<'w, 's>,
F7: Fetch<'w, 's>,
F8: Fetch<'w, 's>,
F9: Fetch<'w, 's>,
F10: Fetch<'w, 's>,
F11: Fetch<'w, 's>,
F12: Fetch<'w, 's>,
F13: Fetch<'w, 's>,
impl<'w, 's, F0, F1, F2, F3, F4, F5, F6, F7, F8, F9, F10, F11, F12, F13> Fetch<'w, 's> for Or<(OrFetch<F0>, OrFetch<F1>, OrFetch<F2>, OrFetch<F3>, OrFetch<F4>, OrFetch<F5>, OrFetch<F6>, OrFetch<F7>, OrFetch<F8>, OrFetch<F9>, OrFetch<F10>, OrFetch<F11>, OrFetch<F12>, OrFetch<F13>)> where
F0: FilterFetch,
F1: FilterFetch,
F2: FilterFetch,
F3: FilterFetch,
F4: FilterFetch,
F5: FilterFetch,
F6: FilterFetch,
F7: FilterFetch,
F8: FilterFetch,
F9: FilterFetch,
F10: FilterFetch,
F11: FilterFetch,
F12: FilterFetch,
F13: FilterFetch,
impl<'w, 's, F0, F1, F2, F3, F4, F5, F6, F7, F8, F9, F10, F11, F12, F13, F14> Fetch<'w, 's> for AnyOf<((F0, bool), (F1, bool), (F2, bool), (F3, bool), (F4, bool), (F5, bool), (F6, bool), (F7, bool), (F8, bool), (F9, bool), (F10, bool), (F11, bool), (F12, bool), (F13, bool), (F14, bool))> where
F0: Fetch<'w, 's>,
F1: Fetch<'w, 's>,
F2: Fetch<'w, 's>,
F3: Fetch<'w, 's>,
F4: Fetch<'w, 's>,
F5: Fetch<'w, 's>,
F6: Fetch<'w, 's>,
F7: Fetch<'w, 's>,
F8: Fetch<'w, 's>,
F9: Fetch<'w, 's>,
F10: Fetch<'w, 's>,
F11: Fetch<'w, 's>,
F12: Fetch<'w, 's>,
F13: Fetch<'w, 's>,
F14: Fetch<'w, 's>,
impl<'w, 's, F0, F1, F2, F3, F4, F5, F6, F7, F8, F9, F10, F11, F12, F13, F14> Fetch<'w, 's> for Or<(OrFetch<F0>, OrFetch<F1>, OrFetch<F2>, OrFetch<F3>, OrFetch<F4>, OrFetch<F5>, OrFetch<F6>, OrFetch<F7>, OrFetch<F8>, OrFetch<F9>, OrFetch<F10>, OrFetch<F11>, OrFetch<F12>, OrFetch<F13>, OrFetch<F14>)> where
F0: FilterFetch,
F1: FilterFetch,
F2: FilterFetch,
F3: FilterFetch,
F4: FilterFetch,
F5: FilterFetch,
F6: FilterFetch,
F7: FilterFetch,
F8: FilterFetch,
F9: FilterFetch,
F10: FilterFetch,
F11: FilterFetch,
F12: FilterFetch,
F13: FilterFetch,
F14: FilterFetch,