diff --git a/zcash_primitives/src/transaction/components/amount.rs b/zcash_primitives/src/transaction/components/amount.rs index 1da978d76..3ea1c9bab 100644 --- a/zcash_primitives/src/transaction/components/amount.rs +++ b/zcash_primitives/src/transaction/components/amount.rs @@ -2,6 +2,8 @@ use std::convert::TryFrom; use std::iter::Sum; use std::ops::{Add, AddAssign, Neg, Sub, SubAssign}; +use orchard::value as orchard; + pub const COIN: i64 = 1_0000_0000; pub const MAX_MONEY: i64 = 21_000_000 * COIN; @@ -180,6 +182,14 @@ impl Neg for Amount { } } +impl TryFrom for Amount { + type Error = (); + + fn try_from(v: orchard::ValueSum) -> Result { + i64::try_from(v).map_err(|_| ()).and_then(Amount::try_from) + } +} + #[cfg(any(test, feature = "test-dependencies"))] pub mod testing { use proptest::prelude::prop_compose;