From 4bcad97ba11f67efd01455c6a8e9ad5e6b44f2f0 Mon Sep 17 00:00:00 2001 From: Kris Nuttycombe Date: Wed, 12 May 2021 14:20:04 -0600 Subject: [PATCH] Add amount conversion for Orchard values. --- zcash_primitives/src/transaction/components/amount.rs | 10 ++++++++++ 1 file changed, 10 insertions(+) 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;