aboutsummaryrefslogtreecommitdiffhomepage
path: root/crates/shirabe-semver/src/constraint/multi_constraint.rs
diff options
context:
space:
mode:
Diffstat (limited to 'crates/shirabe-semver/src/constraint/multi_constraint.rs')
-rw-r--r--crates/shirabe-semver/src/constraint/multi_constraint.rs15
1 files changed, 13 insertions, 2 deletions
diff --git a/crates/shirabe-semver/src/constraint/multi_constraint.rs b/crates/shirabe-semver/src/constraint/multi_constraint.rs
index 86afa8d..29d6f5e 100644
--- a/crates/shirabe-semver/src/constraint/multi_constraint.rs
+++ b/crates/shirabe-semver/src/constraint/multi_constraint.rs
@@ -166,8 +166,8 @@ impl MultiConstraint {
Some(Box::new(
MultiConstraint::new(
vec![
- l_mc.constraints[0].clone(),
- r_mc.constraints[1].clone(),
+ l_mc.constraints[0].clone_box(),
+ r_mc.constraints[1].clone_box(),
],
true,
)
@@ -311,6 +311,17 @@ impl ConstraintInterface for MultiConstraint {
!self.conjunctive
}
+ fn clone_box(&self) -> Box<dyn ConstraintInterface> {
+ Box::new(MultiConstraint {
+ constraints: self.constraints.iter().map(|c| c.clone_box()).collect(),
+ pretty_string: self.pretty_string.clone(),
+ string: RefCell::new(self.string.borrow().clone()),
+ conjunctive: self.conjunctive,
+ lower_bound: RefCell::new(self.lower_bound.borrow().clone()),
+ upper_bound: RefCell::new(self.upper_bound.borrow().clone()),
+ })
+ }
+
fn as_any(&self) -> &dyn std::any::Any {
self
}