Skip to content

Commit cae1cca

Browse files
committed
ye
Signed-off-by: Joe Isaacs <[email protected]>
1 parent a7c6283 commit cae1cca

File tree

1 file changed

+31
-30
lines changed

1 file changed

+31
-30
lines changed

vortex-array/src/expr/session/rewrite.rs

Lines changed: 31 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -267,19 +267,22 @@ impl RewriteRuleRegistry {
267267
}
268268

269269
/// Get all typed reduce rules for a given expression ID.
270-
pub(crate) fn typed_reduce_rules_for(&self, id: &ExprId) -> &[Arc<dyn DynTypedReduceRule>] {
270+
pub(crate) fn typed_reduce_rules_for(
271+
&self,
272+
id: &ExprId,
273+
) -> impl Iterator<Item = &Arc<dyn DynTypedReduceRule>> {
271274
self.typed_reduce_rules
272275
.get(id)
273-
.map(|v| v.as_slice())
274-
.unwrap_or_default()
276+
.into_iter()
277+
.flat_map(|v| v.iter())
275278
}
276279

277280
/// Get all untyped reduce rules for a given expression ID.
278-
pub(crate) fn reduce_rules_for(&self, id: &ExprId) -> &[Arc<dyn DynReduceRule>] {
279-
self.reduce_rules
280-
.get(id)
281-
.map(|v| v.as_slice())
282-
.unwrap_or_default()
281+
pub(crate) fn reduce_rules_for(
282+
&self,
283+
id: &ExprId,
284+
) -> impl Iterator<Item = &Arc<dyn DynReduceRule>> {
285+
self.reduce_rules.get(id).into_iter().flat_map(|v| v.iter())
283286
}
284287

285288
/// Get all untyped parent reduce rules for a given child and parent expression ID pair.
@@ -289,21 +292,20 @@ impl RewriteRuleRegistry {
289292
&self,
290293
child_id: &ExprId,
291294
parent_id: &ExprId,
292-
) -> Vec<Arc<dyn DynParentReduceRule>> {
293-
let mut rules = Vec::new();
294-
295-
if let Some(specific) = self
295+
) -> impl Iterator<Item = &Arc<dyn DynParentReduceRule>> {
296+
let specific = self
296297
.parent_rules
297298
.get(&(child_id.clone(), parent_id.clone()))
298-
{
299-
rules.extend_from_slice(specific);
300-
}
299+
.into_iter()
300+
.flat_map(|v| v.iter());
301301

302-
if let Some(wildcard) = self.any_parent_rules.get(child_id) {
303-
rules.extend_from_slice(wildcard);
304-
}
302+
let wildcard = self
303+
.any_parent_rules
304+
.get(child_id)
305+
.into_iter()
306+
.flat_map(|v| v.iter());
305307

306-
rules
308+
specific.chain(wildcard)
307309
}
308310

309311
/// Get all the typed parent reduce rules for a given child and parent expression ID pair.
@@ -313,20 +315,19 @@ impl RewriteRuleRegistry {
313315
&self,
314316
child_id: &ExprId,
315317
parent_id: &ExprId,
316-
) -> Vec<Arc<dyn DynTypedParentReduceRule>> {
317-
let mut rules = Vec::new();
318-
319-
if let Some(specific) = self
318+
) -> impl Iterator<Item = &Arc<dyn DynTypedParentReduceRule>> {
319+
let specific = self
320320
.typed_parent_rules
321321
.get(&(child_id.clone(), parent_id.clone()))
322-
{
323-
rules.extend_from_slice(specific);
324-
}
322+
.into_iter()
323+
.flat_map(|v| v.iter());
325324

326-
if let Some(wildcard) = self.typed_any_parent_rules.get(child_id) {
327-
rules.extend_from_slice(wildcard);
328-
}
325+
let wildcard = self
326+
.typed_any_parent_rules
327+
.get(child_id)
328+
.into_iter()
329+
.flat_map(|v| v.iter());
329330

330-
rules
331+
specific.chain(wildcard)
331332
}
332333
}

0 commit comments

Comments
 (0)