MCPcopy Create free account
hub / github.com/cel-rust/cel-rust / sub

Method sub

cel/src/objects.rs:1628–1657  ·  view source on GitHub ↗
(self, rhs: Value)

Source from the content-addressed store, hash-verified

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
1660impl ops::Div<Value> for Value {

Callers 1

resolve_valMethod · 0.45

Calls 3

checked_opFunction · 0.85
mapMethod · 0.80
DurationClass · 0.70

Tested by

no test coverage detected