Skip to content

Commit 9bb84c2

Browse files
committed
fix clippy warnings
1 parent 4f1e0f2 commit 9bb84c2

File tree

2 files changed

+38
-55
lines changed

2 files changed

+38
-55
lines changed

optd/src/core/memo/memory.rs

+35-44
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,9 @@
1-
use std::collections::hash_map::Entry;
2-
use std::collections::{HashMap, HashSet, VecDeque};
3-
4-
use async_recursion::async_recursion;
5-
6-
use crate::cir::Child;
7-
8-
use super::Memoize;
91
use super::merge_repr::Representative;
102
use super::*;
3+
use crate::core::cir::Child;
4+
use async_recursion::async_recursion;
5+
use std::collections::hash_map::Entry;
6+
use std::collections::{HashMap, HashSet, VecDeque};
117

128
/// An in-memory implementation of the memo table.
139
#[derive(Default)]
@@ -347,7 +343,7 @@ impl Memoize for MemoryMemo {
347343
.transform_dependency
348344
.get(&logical_expr_id)
349345
.and_then(|status_map| status_map.get(rule))
350-
.map(|dep| dep.status.clone())
346+
.map(|dep| dep.status)
351347
.unwrap_or(Status::Dirty);
352348
Ok(status)
353349
}
@@ -386,7 +382,7 @@ impl Memoize for MemoryMemo {
386382
.implement_dependency
387383
.get(&logical_expr_id)
388384
.and_then(|status_map| status_map.get(&(goal_id, rule.clone())))
389-
.map(|dep| dep.status.clone())
385+
.map(|dep| dep.status)
390386
.unwrap_or(Status::Dirty);
391387
Ok(status)
392388
}
@@ -422,7 +418,7 @@ impl Memoize for MemoryMemo {
422418
let status = self
423419
.cost_dependency
424420
.get(&physical_expr_id)
425-
.map(|dep| dep.status.clone())
421+
.map(|dep| dep.status)
426422
.unwrap_or(Status::Dirty);
427423
Ok(status)
428424
}
@@ -573,14 +569,14 @@ impl Memoize for MemoryMemo {
573569
match child {
574570
Child::Singleton(group_id) => {
575571
self.group_dependent_logical_exprs
576-
.entry(group_id.clone())
572+
.entry(*group_id)
577573
.or_default()
578574
.insert(logical_expr_id);
579575
}
580576
Child::VarLength(group_ids) => {
581577
for group_id in group_ids.iter() {
582578
self.group_dependent_logical_exprs
583-
.entry(group_id.clone())
579+
.entry(*group_id)
584580
.or_default()
585581
.insert(logical_expr_id);
586582
}
@@ -624,7 +620,7 @@ impl Memoize for MemoryMemo {
624620
Child::Singleton(goal_member_id) => {
625621
if let GoalMemberId::GoalId(goal_id) = goal_member_id {
626622
self.goal_dependent_physical_exprs
627-
.entry(goal_id.clone())
623+
.entry(*goal_id)
628624
.or_default()
629625
.insert(physical_expr_id);
630626
}
@@ -634,13 +630,13 @@ impl Memoize for MemoryMemo {
634630
match goal_member_id {
635631
GoalMemberId::GoalId(goal_id) => {
636632
self.goal_dependent_physical_exprs
637-
.entry(goal_id.clone())
633+
.entry(*goal_id)
638634
.or_default()
639635
.insert(physical_expr_id);
640636
}
641637
GoalMemberId::PhysicalExpressionId(child_physical_expr_id) => {
642638
self.physical_expr_dependent_physical_exprs
643-
.entry(child_physical_expr_id.clone())
639+
.entry(*child_physical_expr_id)
644640
.or_default()
645641
.insert(physical_expr_id);
646642
}
@@ -703,17 +699,16 @@ impl MemoryMemo {
703699
for child in repr_logical_expr.children.iter() {
704700
match child {
705701
Child::Singleton(group_id) => {
706-
let repr_group_id = self.find_repr_group(group_id.clone()).await?;
702+
let repr_group_id = self.find_repr_group(*group_id).await?;
707703
new_children.push(Child::Singleton(repr_group_id));
708704
}
709705
Child::VarLength(group_ids) => {
710706
let new_group_ids = group_ids
711707
.iter()
712708
.map(|group_id| {
713-
let group_id = group_id.clone();
714709
let self_ref = &self;
715710
// TODO(Sarvesh): this is a hack to get the repr group id, i'm sure there's a better way to do this.
716-
async move { self_ref.find_repr_group(group_id).await }
711+
async move { self_ref.find_repr_group(*group_id).await }
717712
})
718713
.collect::<Vec<_>>();
719714

@@ -742,24 +737,23 @@ impl MemoryMemo {
742737
match child {
743738
Child::Singleton(goal_member_id) => {
744739
if let GoalMemberId::GoalId(goal_id) = goal_member_id {
745-
let repr_goal_id = self.find_repr_goal(goal_id.clone()).await?;
740+
let repr_goal_id = self.find_repr_goal(*goal_id).await?;
746741
new_children.push(Child::Singleton(GoalMemberId::GoalId(repr_goal_id)));
747742
} else {
748-
new_children.push(Child::Singleton(goal_member_id.clone()));
743+
new_children.push(Child::Singleton(*goal_member_id));
749744
}
750745
}
751746
Child::VarLength(goal_member_ids) => {
752747
let mut new_goal_member_ids = Vec::new();
753748
for goal_member_id in goal_member_ids.iter() {
754749
match goal_member_id {
755750
GoalMemberId::GoalId(goal_id) => {
756-
let repr_goal_id = self.find_repr_goal(goal_id.clone()).await?;
751+
let repr_goal_id = self.find_repr_goal(*goal_id).await?;
757752
new_goal_member_ids.push(GoalMemberId::GoalId(repr_goal_id));
758753
}
759754
GoalMemberId::PhysicalExpressionId(physical_expr_id) => {
760-
let repr_physical_expr_id = self
761-
.find_repr_physical_expr(physical_expr_id.clone())
762-
.await?;
755+
let repr_physical_expr_id =
756+
self.find_repr_physical_expr(*physical_expr_id).await?;
763757
new_goal_member_ids.push(GoalMemberId::PhysicalExpressionId(
764758
repr_physical_expr_id,
765759
));
@@ -780,7 +774,7 @@ impl MemoryMemo {
780774
&mut self,
781775
physical_expr_id: PhysicalExpressionId,
782776
) -> MemoizeResult<Vec<MergePhysicalExprResult>> {
783-
let (physical_expr, cost) = self.physical_exprs.get(&physical_expr_id).unwrap();
777+
let (physical_expr, _cost) = self.physical_exprs.get(&physical_expr_id).unwrap();
784778
let repr_physical_expr = self
785779
.create_repr_physical_expr(physical_expr.clone())
786780
.await?;
@@ -796,7 +790,7 @@ impl MemoryMemo {
796790
let mut results = Vec::new();
797791
results.push(MergePhysicalExprResult {
798792
repr_physical_expr: repr_physical_expr_id,
799-
stale_physical_exprs: stale_physical_exprs,
793+
stale_physical_exprs,
800794
});
801795

802796
let dependent_physical_exprs = self
@@ -808,7 +802,7 @@ impl MemoryMemo {
808802
for dependent_physical_expr_id in dependent_physical_exprs {
809803
// TODO(Sarvesh): handle async recursion
810804
let merge_physical_expr_result = self
811-
.merge_physical_exprs(dependent_physical_expr_id.clone())
805+
.merge_physical_exprs(dependent_physical_expr_id)
812806
.await?;
813807
results.extend(merge_physical_expr_result);
814808
}
@@ -825,8 +819,6 @@ impl MemoryMemo {
825819
) -> MemoizeResult<(MergeGoalResult, Vec<MergePhysicalExprResult>)> {
826820
let goal_2 = self.goals.remove(&goal_id2).unwrap();
827821
let goal_1 = self.goals.get(&goal_id1).unwrap();
828-
let goal_1_props = &goal_1.goal.1;
829-
let goal_2_props = &goal_2.goal.1;
830822
self.repr_goal.merge(&goal_id2, &goal_id1);
831823

832824
let mut merged_goal_result = MergeGoalResult {
@@ -855,8 +847,8 @@ impl MemoryMemo {
855847
merged_goal_result.best_expr = Some(best_expr);
856848
}
857849

858-
let mut merged_goal_info_1 = MergedGoalInfo {
859-
goal_id: goal_id1.clone(),
850+
let merged_goal_info_1 = MergedGoalInfo {
851+
goal_id: goal_id1,
860852
members: goal_1.members.iter().cloned().collect(),
861853
seen_best_expr_before_merge: {
862854
if let Some(best_expr_goal1) = best_expr_goal1 {
@@ -874,8 +866,8 @@ impl MemoryMemo {
874866
},
875867
};
876868

877-
let mut merged_goal_info_2 = MergedGoalInfo {
878-
goal_id: goal_id2.clone(),
869+
let merged_goal_info_2 = MergedGoalInfo {
870+
goal_id: goal_id2,
879871
members: goal_2.members.iter().cloned().collect(),
880872
seen_best_expr_before_merge: {
881873
if let Some(best_expr_goal2) = best_expr_goal2 {
@@ -895,10 +887,10 @@ impl MemoryMemo {
895887

896888
merged_goal_result
897889
.merged_goals
898-
.insert(goal_id1.clone(), merged_goal_info_1);
890+
.insert(goal_id1, merged_goal_info_1);
899891
merged_goal_result
900892
.merged_goals
901-
.insert(goal_id2.clone(), merged_goal_info_2);
893+
.insert(goal_id2, merged_goal_info_2);
902894

903895
// Now, we need to update all the physical exprs that depend on goal 2 to now depend on goal 1.
904896
let goal_2_dependent_physical_exprs = self
@@ -966,14 +958,13 @@ impl MemoryMemo {
966958

967959
for goal_id1 in group_1_goals.iter() {
968960
for goal_id2 in group_2_goals.iter() {
969-
let goal_1 = self.goals.get(&goal_id1).unwrap();
970-
let goal_2 = self.goals.get(&goal_id2).unwrap();
961+
let goal_1 = self.goals.get(goal_id1).unwrap();
962+
let goal_2 = self.goals.get(goal_id2).unwrap();
971963
let goal_1_props = &goal_1.goal.1;
972964
let goal_2_props = &goal_2.goal.1;
973965
if goal_1_props == goal_2_props {
974-
let (merged_goal_result, merge_physical_expr_results) = self
975-
.merge_goals_helper(goal_id1.clone(), goal_id2.clone())
976-
.await?;
966+
let (merged_goal_result, merge_physical_expr_results) =
967+
self.merge_goals_helper(*goal_id1, *goal_id2).await?;
977968
result.goal_merges.push(merged_goal_result);
978969
result
979970
.physical_expr_merges
@@ -995,7 +986,7 @@ impl MemoryMemo {
995986
let repr_logical_expr_id = self.get_logical_expr_id(&repr_logical_expr).await?;
996987
// merge the logical exprs
997988
self.repr_logical_expr
998-
.merge(&logical_expr_id, &repr_logical_expr_id);
989+
.merge(logical_expr_id, &repr_logical_expr_id);
999990

1000991
let parent_group_id = self.logical_expr_group_index.get(logical_expr_id).unwrap();
1001992
let parent_group_state = self.groups.get_mut(parent_group_id).unwrap();
@@ -1012,7 +1003,7 @@ impl MemoryMemo {
10121003
// we have another merge to do
10131004
// do a cascading merge between repr_parent_group_id and parent_group_id
10141005
let merge_result = self
1015-
.merge_groups_helper(repr_parent_group_id.clone(), parent_group_id.clone())
1006+
.merge_groups_helper(*repr_parent_group_id, *parent_group_id)
10161007
.await?;
10171008
// merge the cascading merge result with the current result.
10181009
if let Some(merge_result) = merge_result {
@@ -1031,7 +1022,7 @@ impl MemoryMemo {
10311022
.insert(repr_logical_expr_id);
10321023
// we update the index
10331024
self.logical_expr_group_index
1034-
.insert(repr_logical_expr_id, parent_group_id.clone());
1025+
.insert(repr_logical_expr_id, *parent_group_id);
10351026
}
10361027
}
10371028

optd/src/core/memo/mod.rs

+3-11
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,8 @@
1-
#[cfg(test)]
2-
pub mod memory;
3-
mod merge_repr;
4-
1+
use crate::core::cir::*;
52
use std::collections::{HashMap, HashSet};
63

7-
use async_recursion::async_recursion;
8-
9-
use crate::cir::{
10-
Cost, Goal, GoalId, GoalMemberId, GroupId, ImplementationRule, LogicalExpression,
11-
LogicalExpressionId, LogicalProperties, PhysicalExpression, PhysicalExpressionId,
12-
TransformationRule,
13-
};
4+
mod memory;
5+
mod merge_repr;
146

157
/// Type alias for results returned by Memoize trait methods
168
pub type MemoizeResult<T> = Result<T, MemoizeError>;

0 commit comments

Comments
 (0)