(self, rhs: Value)
| 1626 | |
| 1627 | #[inline(always)] |
| 1628 | fn sub(self, rhs: Value) -> Self::Output { |
| 1629 | match (self, rhs) { |
| 1630 | (Value::Int(l), Value::Int(r)) => l |
| 1631 | .checked_sub(r) |
| 1632 | .ok_or_else(|| ExecutionError::Overflow("sub", l.into(), r.into())) |
| 1633 | .map(Value::Int), |
| 1634 | |
| 1635 | (Value::UInt(l), Value::UInt(r)) => l |
| 1636 | .checked_sub(r) |
| 1637 | .ok_or_else(|| ExecutionError::Overflow("sub", l.into(), r.into())) |
| 1638 | .map(Value::UInt), |
| 1639 | |
| 1640 | (Value::Float(l), Value::Float(r)) => Value::Float(l - r).into(), |
| 1641 | |
| 1642 | #[cfg(feature = "chrono")] |
| 1643 | (Value::Duration(l), Value::Duration(r)) => l |
| 1644 | .checked_sub(&r) |
| 1645 | .ok_or_else(|| ExecutionError::Overflow("sub", l.into(), r.into())) |
| 1646 | .map(Value::Duration), |
| 1647 | #[cfg(feature = "chrono")] |
| 1648 | (Value::Timestamp(l), Value::Duration(r)) => checked_op(TsOp::Sub, &l, &r), |
| 1649 | #[cfg(feature = "chrono")] |
| 1650 | (Value::Timestamp(l), Value::Timestamp(r)) => { |
| 1651 | Value::Duration(l.signed_duration_since(r)).into() |
| 1652 | } |
| 1653 | (left, right) => Err(ExecutionError::UnsupportedBinaryOperator( |
| 1654 | "sub", left, right, |
| 1655 | )), |
| 1656 | } |
| 1657 | } |
| 1658 | } |
| 1659 | |
| 1660 | impl ops::Div<Value> for Value { |
no test coverage detected