diff options
| author | nsfisis <nsfisis@gmail.com> | 2026-05-17 04:56:37 +0900 |
|---|---|---|
| committer | nsfisis <nsfisis@gmail.com> | 2026-05-17 04:57:23 +0900 |
| commit | 8fb6de392bbac104c07a5cdbac12a4fd25ab1127 (patch) | |
| tree | 9cbe66e913ae2166b1f976ae5a2a1e8a06492e97 /crates/shirabe-semver/src/constraint/multi_constraint.rs | |
| parent | 90b3be462bd2f91ef366df06c2b5bbae2821a394 (diff) | |
| download | php-shirabe-8fb6de392bbac104c07a5cdbac12a4fd25ab1127.tar.gz php-shirabe-8fb6de392bbac104c07a5cdbac12a4fd25ab1127.tar.zst php-shirabe-8fb6de392bbac104c07a5cdbac12a4fd25ab1127.zip | |
fix(semver): resolve shirabe-semver compile errors
- Replace RefCell with Mutex in Constraint for thread safety
- Add clone_box() to ConstraintInterface for cloning trait objects
- Propagate Result from Constraint::new() and unwrap at call sites
- Fix VersionParser instantiation (unit struct, not fn)
- Add indexmap dependency to shirabe-semver
Diffstat (limited to 'crates/shirabe-semver/src/constraint/multi_constraint.rs')
| -rw-r--r-- | crates/shirabe-semver/src/constraint/multi_constraint.rs | 15 |
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 } |
