#[non_exhaustive]pub enum Error<DataSourceError, CommitmentTreeError, SelectionError, FeeError, ChangeErrT, NoteRefT> {
Show 24 variants
DataSource(DataSourceError),
CommitmentTree(ShardTreeError<CommitmentTreeError>),
NoteSelection(SelectionError),
Change(ChangeError<ChangeErrT, NoteRefT>),
Proposal(ProposalError),
ProposalNotSupported,
AccountIdNotRecognized,
KeyNotRecognized,
AccountCannotSpend,
BalanceError(BalanceError),
InsufficientFunds {
available: Zatoshis,
required: Zatoshis,
},
ScanRequired,
Builder(Error<FeeError>),
Payment(PaymentError),
UnsupportedChangeType(PoolType),
NoSupportedReceivers(Box<UnifiedAddress>),
KeyNotAvailable(PoolType),
NoteMismatch(NoteId),
Address(ConversionError<&'static str>),
AddressNotRecognized(TransparentAddress),
ExpiryHeightBelowTargetHeight {
expiry_height: BlockHeight,
min_target_height: BlockHeight,
},
ExpiryHeightConflictsWithCanonicalCrossing {
requested: BlockHeight,
},
RecipientAddressExpiry {
payment_index: usize,
error: AddressExpiryError,
},
Pczt(PcztError),
}Expand description
Errors that can occur as a consequence of wallet operations.
Variants (Non-exhaustive)§
This enum is marked as non-exhaustive
DataSource(DataSourceError)
An error occurred retrieving data from the underlying data source
CommitmentTree(ShardTreeError<CommitmentTreeError>)
An error in computations involving the note commitment trees.
NoteSelection(SelectionError)
An error in note selection
Change(ChangeError<ChangeErrT, NoteRefT>)
An error in change selection during transaction proposal construction
Proposal(ProposalError)
An error in transaction proposal construction
ProposalNotSupported
The proposal was structurally valid, but tried to do one of these unsupported things:
- spend a prior shielded output;
- pay to an output pool for which the corresponding feature is not enabled;
- pay to a TEX address if the “transparent-inputs” feature is not enabled.
- a proposal step has no inputs
AccountIdNotRecognized
No account could be found corresponding to a provided ID.
KeyNotRecognized
No account could be found corresponding to a provided spending key.
AccountCannotSpend
The given account cannot be used for spending, because it is unable to maintain an accurate balance.
BalanceError(BalanceError)
Zcash amount computation encountered an overflow or underflow.
InsufficientFunds
Unable to create a new spend because the wallet balance is not sufficient.
ScanRequired
The wallet must first perform a scan of the blockchain before other operations can be performed.
Builder(Error<FeeError>)
An error occurred building a new transaction.
Payment(PaymentError)
An error occurred constructing a payment for the transaction.
UnsupportedChangeType(PoolType)
Attempted to send change to an unsupported pool.
This is indicative of a programming error; execution of a transaction proposal that presumes support for the specified pool was performed using an application that does not provide such support.
NoSupportedReceivers(Box<UnifiedAddress>)
Attempted to create a spend to an unsupported Unified Address receiver
KeyNotAvailable(PoolType)
A proposed transaction cannot be built because it requires spending an input of a type for which a key required to construct the transaction is not available.
NoteMismatch(NoteId)
A note being spent does not correspond to either the internal or external full viewing key for an account.
Address(ConversionError<&'static str>)
An error occurred parsing the address from a payment request.
AddressNotRecognized(TransparentAddress)
transparent-inputs only.The address associated with a record being inserted was not recognized as belonging to the wallet.
ExpiryHeightBelowTargetHeight
The caller requested a nonzero target expiry height below the proposal’s minimum target height. Zero remains valid because it disables expiry.
ExpiryHeightConflictsWithCanonicalCrossing
The caller requested an expiry height for a step that is a canonical ZIP 318 crossing.
Such a step takes its expiry from the ZIP 318 rolling window, which every crossing in the
same period shares; a caller-chosen expiry would single it out and undo the shape the
unpadded bundle and bucketed anchor were chosen to produce. Those are already fixed by the
time the transaction is built, so the conflict is reported rather than silently resolved.
Pass None to accept the canonical expiry.
Fields
requested: BlockHeightRecipientAddressExpiry
A ZIP 316 Revision 2 recipient address of the payment at the given index has expired, or has expiry metadata that conflicts with the transaction’s expiry height. A currently-valid address should be obtained for the intended recipient.
Pczt(PcztError)
pczt only.An error occurred while working with PCZTs.
Trait Implementations§
Source§impl<DataSourceError: Debug, CommitmentTreeError: Debug, SelectionError: Debug, FeeError: Debug, ChangeErrT: Debug, NoteRefT: Debug> Debug for Error<DataSourceError, CommitmentTreeError, SelectionError, FeeError, ChangeErrT, NoteRefT>
impl<DataSourceError: Debug, CommitmentTreeError: Debug, SelectionError: Debug, FeeError: Debug, ChangeErrT: Debug, NoteRefT: Debug> Debug for Error<DataSourceError, CommitmentTreeError, SelectionError, FeeError, ChangeErrT, NoteRefT>
Source§impl<DE, TE, SE, FE, CE, N> Error for Error<DE, TE, SE, FE, CE, N>
impl<DE, TE, SE, FE, CE, N> Error for Error<DE, TE, SE, FE, CE, N>
Source§fn source(&self) -> Option<&(dyn Error + 'static)>
fn source(&self) -> Option<&(dyn Error + 'static)>
1.0.0 · Source§fn description(&self) -> &str
fn description(&self) -> &str
use the Display impl or to_string()
Source§impl<DE, TE, SE, FE, CE, N> From<ConversionError<&'static str>> for Error<DE, TE, SE, FE, CE, N>
impl<DE, TE, SE, FE, CE, N> From<ConversionError<&'static str>> for Error<DE, TE, SE, FE, CE, N>
Source§fn from(value: ConversionError<&'static str>) -> Self
fn from(value: ConversionError<&'static str>) -> Self
Source§impl<DE, TE, SE, FE, CE, N> From<Error> for Error<DE, TE, SE, FE, CE, N>
Available on crate feature pczt only.
impl<DE, TE, SE, FE, CE, N> From<Error> for Error<DE, TE, SE, FE, CE, N>
pczt only.Source§impl<DE, TE, SE, FE, CE, N> From<Error> for Error<DE, TE, SE, FE, CE, N>
Available on crate feature pczt only.
impl<DE, TE, SE, FE, CE, N> From<Error> for Error<DE, TE, SE, FE, CE, N>
pczt only.Source§impl<DE, TE, SE, FE, CE, N> From<Error> for Error<DE, TE, SE, FE, CE, N>
Available on crate feature pczt only.
impl<DE, TE, SE, FE, CE, N> From<Error> for Error<DE, TE, SE, FE, CE, N>
pczt only.Source§impl<DE, TE, SE, FE, CE, N> From<InputSelectorError<DE, SE, CE, N>> for Error<DE, TE, SE, FE, CE, N>
impl<DE, TE, SE, FE, CE, N> From<InputSelectorError<DE, SE, CE, N>> for Error<DE, TE, SE, FE, CE, N>
Source§fn from(e: InputSelectorError<DE, SE, CE, N>) -> Self
fn from(e: InputSelectorError<DE, SE, CE, N>) -> Self
Source§impl<DE, TE, SE, FE, CE, N> From<OrchardError> for Error<DE, TE, SE, FE, CE, N>
Available on crate feature pczt only.
impl<DE, TE, SE, FE, CE, N> From<OrchardError> for Error<DE, TE, SE, FE, CE, N>
pczt only.Source§fn from(e: OrchardError) -> Self
fn from(e: OrchardError) -> Self
Source§impl<DE, TE, SE, FE, CE, N> From<PcztError> for Error<DE, TE, SE, FE, CE, N>
Available on crate feature pczt only.
impl<DE, TE, SE, FE, CE, N> From<PcztError> for Error<DE, TE, SE, FE, CE, N>
pczt only.Source§impl<DE, TE, SE, FE, CE, N> From<ProposalError> for Error<DE, TE, SE, FE, CE, N>
impl<DE, TE, SE, FE, CE, N> From<ProposalError> for Error<DE, TE, SE, FE, CE, N>
Source§fn from(e: ProposalError) -> Self
fn from(e: ProposalError) -> Self
Source§impl<DE, TE, SE, FE, CE, N> From<SaplingError> for Error<DE, TE, SE, FE, CE, N>
Available on crate feature pczt only.
impl<DE, TE, SE, FE, CE, N> From<SaplingError> for Error<DE, TE, SE, FE, CE, N>
pczt only.Source§fn from(e: SaplingError) -> Self
fn from(e: SaplingError) -> Self
Source§impl<DE, TE, SE, FE, CE, N> From<TransparentError> for Error<DE, TE, SE, FE, CE, N>
Available on crate feature pczt only.
impl<DE, TE, SE, FE, CE, N> From<TransparentError> for Error<DE, TE, SE, FE, CE, N>
pczt only.Source§fn from(e: TransparentError) -> Self
fn from(e: TransparentError) -> Self
Auto Trait Implementations§
impl<DataSourceError, CommitmentTreeError, SelectionError, FeeError, ChangeErrT, NoteRefT> !RefUnwindSafe for Error<DataSourceError, CommitmentTreeError, SelectionError, FeeError, ChangeErrT, NoteRefT>
impl<DataSourceError, CommitmentTreeError, SelectionError, FeeError, ChangeErrT, NoteRefT> !UnwindSafe for Error<DataSourceError, CommitmentTreeError, SelectionError, FeeError, ChangeErrT, NoteRefT>
impl<DataSourceError, CommitmentTreeError, SelectionError, FeeError, ChangeErrT, NoteRefT> Freeze for Error<DataSourceError, CommitmentTreeError, SelectionError, FeeError, ChangeErrT, NoteRefT>
impl<DataSourceError, CommitmentTreeError, SelectionError, FeeError, ChangeErrT, NoteRefT> Send for Error<DataSourceError, CommitmentTreeError, SelectionError, FeeError, ChangeErrT, NoteRefT>
impl<DataSourceError, CommitmentTreeError, SelectionError, FeeError, ChangeErrT, NoteRefT> Sync for Error<DataSourceError, CommitmentTreeError, SelectionError, FeeError, ChangeErrT, NoteRefT>
impl<DataSourceError, CommitmentTreeError, SelectionError, FeeError, ChangeErrT, NoteRefT> Unpin for Error<DataSourceError, CommitmentTreeError, SelectionError, FeeError, ChangeErrT, NoteRefT>
impl<DataSourceError, CommitmentTreeError, SelectionError, FeeError, ChangeErrT, NoteRefT> UnsafeUnpin for Error<DataSourceError, CommitmentTreeError, SelectionError, FeeError, ChangeErrT, NoteRefT>where
DataSourceError: UnsafeUnpin,
ShardTreeError<CommitmentTreeError>: UnsafeUnpin,
SelectionError: UnsafeUnpin,
ChangeError<ChangeErrT, NoteRefT>: UnsafeUnpin,
Error<FeeError>: UnsafeUnpin,
Blanket Implementations§
§impl<'a, T, E> AsTaggedExplicit<'a, E> for Twhere
T: 'a,
impl<'a, T, E> AsTaggedExplicit<'a, E> for Twhere
T: 'a,
§impl<'a, T, E> AsTaggedImplicit<'a, E> for Twhere
T: 'a,
impl<'a, T, E> AsTaggedImplicit<'a, E> for Twhere
T: 'a,
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
§impl<T> Conv for T
impl<T> Conv for T
§impl<T> Downcast for Twhere
T: Any,
impl<T> Downcast for Twhere
T: Any,
§fn into_any(self: Box<T>) -> Box<dyn Any>
fn into_any(self: Box<T>) -> Box<dyn Any>
Box<dyn Trait> (where Trait: Downcast) to Box<dyn Any>, which can then be
downcast into Box<dyn ConcreteType> where ConcreteType implements Trait.§fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
Rc<Trait> (where Trait: Downcast) to Rc<Any>, which can then be further
downcast into Rc<ConcreteType> where ConcreteType implements Trait.§fn as_any(&self) -> &(dyn Any + 'static)
fn as_any(&self) -> &(dyn Any + 'static)
&Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot
generate &Any’s vtable from &Trait’s.§fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
&mut Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot
generate &mut Any’s vtable from &mut Trait’s.§impl<T> DowncastSend for T
impl<T> DowncastSend for T
§impl<T> DowncastSync for T
impl<T> DowncastSync for T
§impl<T> FmtForward for T
impl<T> FmtForward for T
§fn fmt_binary(self) -> FmtBinary<Self>where
Self: Binary,
fn fmt_binary(self) -> FmtBinary<Self>where
Self: Binary,
self to use its Binary implementation when Debug-formatted.§fn fmt_display(self) -> FmtDisplay<Self>where
Self: Display,
fn fmt_display(self) -> FmtDisplay<Self>where
Self: Display,
self to use its Display implementation when
Debug-formatted.§fn fmt_lower_exp(self) -> FmtLowerExp<Self>where
Self: LowerExp,
fn fmt_lower_exp(self) -> FmtLowerExp<Self>where
Self: LowerExp,
self to use its LowerExp implementation when
Debug-formatted.§fn fmt_lower_hex(self) -> FmtLowerHex<Self>where
Self: LowerHex,
fn fmt_lower_hex(self) -> FmtLowerHex<Self>where
Self: LowerHex,
self to use its LowerHex implementation when
Debug-formatted.§fn fmt_octal(self) -> FmtOctal<Self>where
Self: Octal,
fn fmt_octal(self) -> FmtOctal<Self>where
Self: Octal,
self to use its Octal implementation when Debug-formatted.§fn fmt_pointer(self) -> FmtPointer<Self>where
Self: Pointer,
fn fmt_pointer(self) -> FmtPointer<Self>where
Self: Pointer,
self to use its Pointer implementation when
Debug-formatted.§fn fmt_upper_exp(self) -> FmtUpperExp<Self>where
Self: UpperExp,
fn fmt_upper_exp(self) -> FmtUpperExp<Self>where
Self: UpperExp,
self to use its UpperExp implementation when
Debug-formatted.§fn fmt_upper_hex(self) -> FmtUpperHex<Self>where
Self: UpperHex,
fn fmt_upper_hex(self) -> FmtUpperHex<Self>where
Self: UpperHex,
self to use its UpperHex implementation when
Debug-formatted.§fn fmt_list(self) -> FmtList<Self>where
&'a Self: for<'a> IntoIterator,
fn fmt_list(self) -> FmtList<Self>where
&'a Self: for<'a> IntoIterator,
§impl<T> Instrument for T
impl<T> Instrument for T
§fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more§impl<T> IntoRequest<T> for T
impl<T> IntoRequest<T> for T
§fn into_request(self) -> Request<T>
fn into_request(self) -> Request<T>
T in a tonic::Request§impl<L> LayerExt<L> for L
impl<L> LayerExt<L> for L
§fn named_layer<S>(&self, service: S) -> Layered<<L as Layer<S>>::Service, S>where
L: Layer<S>,
fn named_layer<S>(&self, service: S) -> Layered<<L as Layer<S>>::Service, S>where
L: Layer<S>,
Layered].§impl<T> Pipe for Twhere
T: ?Sized,
impl<T> Pipe for Twhere
T: ?Sized,
§fn pipe<R>(self, func: impl FnOnce(Self) -> R) -> Rwhere
Self: Sized,
fn pipe<R>(self, func: impl FnOnce(Self) -> R) -> Rwhere
Self: Sized,
§fn pipe_ref<'a, R>(&'a self, func: impl FnOnce(&'a Self) -> R) -> Rwhere
R: 'a,
fn pipe_ref<'a, R>(&'a self, func: impl FnOnce(&'a Self) -> R) -> Rwhere
R: 'a,
self and passes that borrow into the pipe function. Read more§fn pipe_ref_mut<'a, R>(&'a mut self, func: impl FnOnce(&'a mut Self) -> R) -> Rwhere
R: 'a,
fn pipe_ref_mut<'a, R>(&'a mut self, func: impl FnOnce(&'a mut Self) -> R) -> Rwhere
R: 'a,
self and passes that borrow into the pipe function. Read more§fn pipe_borrow<'a, B, R>(&'a self, func: impl FnOnce(&'a B) -> R) -> R
fn pipe_borrow<'a, B, R>(&'a self, func: impl FnOnce(&'a B) -> R) -> R
§fn pipe_borrow_mut<'a, B, R>(
&'a mut self,
func: impl FnOnce(&'a mut B) -> R,
) -> R
fn pipe_borrow_mut<'a, B, R>( &'a mut self, func: impl FnOnce(&'a mut B) -> R, ) -> R
§fn pipe_as_ref<'a, U, R>(&'a self, func: impl FnOnce(&'a U) -> R) -> R
fn pipe_as_ref<'a, U, R>(&'a self, func: impl FnOnce(&'a U) -> R) -> R
self, then passes self.as_ref() into the pipe function.§fn pipe_as_mut<'a, U, R>(&'a mut self, func: impl FnOnce(&'a mut U) -> R) -> R
fn pipe_as_mut<'a, U, R>(&'a mut self, func: impl FnOnce(&'a mut U) -> R) -> R
self, then passes self.as_mut() into the pipe
function.§fn pipe_deref<'a, T, R>(&'a self, func: impl FnOnce(&'a T) -> R) -> R
fn pipe_deref<'a, T, R>(&'a self, func: impl FnOnce(&'a T) -> R) -> R
self, then passes self.deref() into the pipe function.§impl<T> Pointable for T
impl<T> Pointable for T
§impl<T> PossiblyOption<T> for T
impl<T> PossiblyOption<T> for T
§impl<T> Tap for T
impl<T> Tap for T
§fn tap_borrow<B>(self, func: impl FnOnce(&B)) -> Self
fn tap_borrow<B>(self, func: impl FnOnce(&B)) -> Self
Borrow<B> of a value. Read more§fn tap_borrow_mut<B>(self, func: impl FnOnce(&mut B)) -> Self
fn tap_borrow_mut<B>(self, func: impl FnOnce(&mut B)) -> Self
BorrowMut<B> of a value. Read more§fn tap_ref<R>(self, func: impl FnOnce(&R)) -> Self
fn tap_ref<R>(self, func: impl FnOnce(&R)) -> Self
AsRef<R> view of a value. Read more§fn tap_ref_mut<R>(self, func: impl FnOnce(&mut R)) -> Self
fn tap_ref_mut<R>(self, func: impl FnOnce(&mut R)) -> Self
AsMut<R> view of a value. Read more§fn tap_deref<T>(self, func: impl FnOnce(&T)) -> Self
fn tap_deref<T>(self, func: impl FnOnce(&T)) -> Self
Deref::Target of a value. Read more§fn tap_deref_mut<T>(self, func: impl FnOnce(&mut T)) -> Self
fn tap_deref_mut<T>(self, func: impl FnOnce(&mut T)) -> Self
Deref::Target of a value. Read more§fn tap_dbg(self, func: impl FnOnce(&Self)) -> Self
fn tap_dbg(self, func: impl FnOnce(&Self)) -> Self
.tap() only in debug builds, and is erased in release builds.§fn tap_mut_dbg(self, func: impl FnOnce(&mut Self)) -> Self
fn tap_mut_dbg(self, func: impl FnOnce(&mut Self)) -> Self
.tap_mut() only in debug builds, and is erased in release
builds.§fn tap_borrow_dbg<B>(self, func: impl FnOnce(&B)) -> Self
fn tap_borrow_dbg<B>(self, func: impl FnOnce(&B)) -> Self
.tap_borrow() only in debug builds, and is erased in release
builds.§fn tap_borrow_mut_dbg<B>(self, func: impl FnOnce(&mut B)) -> Self
fn tap_borrow_mut_dbg<B>(self, func: impl FnOnce(&mut B)) -> Self
.tap_borrow_mut() only in debug builds, and is erased in release
builds.§fn tap_ref_dbg<R>(self, func: impl FnOnce(&R)) -> Self
fn tap_ref_dbg<R>(self, func: impl FnOnce(&R)) -> Self
.tap_ref() only in debug builds, and is erased in release
builds.§fn tap_ref_mut_dbg<R>(self, func: impl FnOnce(&mut R)) -> Self
fn tap_ref_mut_dbg<R>(self, func: impl FnOnce(&mut R)) -> Self
.tap_ref_mut() only in debug builds, and is erased in release
builds.§fn tap_deref_dbg<T>(self, func: impl FnOnce(&T)) -> Self
fn tap_deref_dbg<T>(self, func: impl FnOnce(&T)) -> Self
.tap_deref() only in debug builds, and is erased in release
builds.§impl<T> TryConv for T
impl<T> TryConv for T
§impl<T> TryIntoSlug for T
impl<T> TryIntoSlug for T
§fn try_into_slug(&self) -> Result<Slug, BadSlug>
fn try_into_slug(&self) -> Result<Slug, BadSlug>
self into a Slug, if it has the right syntax