diff options
| author | Laurenz <laurmaedje@gmail.com> | 2021-08-31 12:59:53 +0200 |
|---|---|---|
| committer | Laurenz <laurmaedje@gmail.com> | 2021-08-31 12:59:53 +0200 |
| commit | 3481d8cc81a2b3a14118869c7f0ffe204ff3efc8 (patch) | |
| tree | 907efa2e092366a24e25243854b1a4e088cc04a9 /src/eval/ops.rs | |
| parent | ee84bf74083f5b9cc88a2a0a968dc905b1eef22c (diff) | |
More utility functions
- join("a", "b", "c", sep: ", ")
- int("12")
- float("31.4e-1")
- str(10)
- sorted((3, 2, 1))
Diffstat (limited to 'src/eval/ops.rs')
| -rw-r--r-- | src/eval/ops.rs | 13 |
1 files changed, 11 insertions, 2 deletions
diff --git a/src/eval/ops.rs b/src/eval/ops.rs index 6d34b877..c7a45614 100644 --- a/src/eval/ops.rs +++ b/src/eval/ops.rs @@ -291,12 +291,21 @@ pub fn compare(lhs: &Value, rhs: &Value) -> Option<Ordering> { match (lhs, rhs) { (Bool(a), Bool(b)) => a.partial_cmp(b), (Int(a), Int(b)) => a.partial_cmp(b), - (Int(a), Float(b)) => (*a as f64).partial_cmp(b), - (Float(a), Int(b)) => a.partial_cmp(&(*b as f64)), (Float(a), Float(b)) => a.partial_cmp(b), (Angle(a), Angle(b)) => a.partial_cmp(b), (Length(a), Length(b)) => a.partial_cmp(b), + (Relative(a), Relative(b)) => a.partial_cmp(b), + (Fractional(a), Fractional(b)) => a.partial_cmp(b), (Str(a), Str(b)) => a.partial_cmp(b), + + // Some technically different things should be comparable. + (&Int(a), &Float(b)) => (a as f64).partial_cmp(&b), + (&Float(a), &Int(b)) => a.partial_cmp(&(b as f64)), + (&Length(a), &Linear(b)) if b.rel.is_zero() => a.partial_cmp(&b.abs), + (&Relative(a), &Linear(b)) if b.abs.is_zero() => a.partial_cmp(&b.rel), + (&Linear(a), &Length(b)) if a.rel.is_zero() => a.abs.partial_cmp(&b), + (&Linear(a), &Relative(b)) if a.abs.is_zero() => a.rel.partial_cmp(&b), + _ => Option::None, } } |
