pub enum Address {
Sapling(Box<PaymentAddress>),
Transparent(TransparentAddress),
Unified(Box<UnifiedAddress>),
Tex([u8; 20]),
}Expand description
An address that funds can be sent to.
Variants§
Sapling(Box<PaymentAddress>)
sapling only.A Sapling payment address.
Transparent(TransparentAddress)
A transparent address corresponding to either a public key hash or a script hash.
Unified(Box<UnifiedAddress>)
A ZIP 316 Unified Address.
Tex([u8; 20])
A ZIP 320 transparent-source-only P2PKH address, or “TEX address”.
Implementations§
Source§impl Address
impl Address
Sourcepub fn decode<P>(params: &P, s: &str) -> Option<Address>where
P: Parameters,
pub fn decode<P>(params: &P, s: &str) -> Option<Address>where
P: Parameters,
Attempts to decode an Address value from its ZcashAddress encoded representation.
Returns None if any error is encountered in decoding. Use
Self::try_from_zcash_address passing in s.parse()? if you need detailed
error information.
Sourcepub fn try_from_zcash_address<P>(
params: &P,
zaddr: ZcashAddress,
) -> Result<Address, ConversionError<&'static str>>where
P: Parameters,
pub fn try_from_zcash_address<P>(
params: &P,
zaddr: ZcashAddress,
) -> Result<Address, ConversionError<&'static str>>where
P: Parameters,
Attempts to decode an Address value from its ZcashAddress encoded representation.
Sourcepub fn to_zcash_address_revision<P>(
&self,
params: &P,
ua_revision: Revision,
) -> Result<ZcashAddress, UnifiedEncodingError>where
P: Parameters,
pub fn to_zcash_address_revision<P>(
&self,
params: &P,
ua_revision: Revision,
) -> Result<ZcashAddress, UnifiedEncodingError>where
P: Parameters,
Converts this Address to a ZcashAddress.
A unified address is encoded with every receiver and metadata item, at the given
ZIP 316 revision. Sapling, transparent, and TEX addresses have a single encoding
and ignore ua_revision.
Returns UnifiedEncodingError::NotRepresentable if this is a unified address
that ua_revision cannot encode in full. Revision::R0 cannot encode expiry
metadata or an address whose only receiver is transparent; every address has a
Revision::R2 encoding.
Sourcepub fn to_zcash_address<P>(&self, params: &P) -> ZcashAddresswhere
P: Parameters,
pub fn to_zcash_address<P>(&self, params: &P) -> ZcashAddresswhere
P: Parameters,
Converts this Address to a ZcashAddress.
A unified address is encoded with every receiver and metadata item, at ZIP 316
Revision::R0 if that revision can represent it, and at Revision::R2
otherwise. Sapling, transparent, and TEX addresses have a single encoding.
Sourcepub fn encode<P>(&self, params: &P) -> Stringwhere
P: Parameters,
pub fn encode<P>(&self, params: &P) -> Stringwhere
P: Parameters,
Returns the string encoding of this Address.
A unified address is encoded with every receiver and metadata item, at ZIP 316
Revision::R0 if that revision can represent it, and at Revision::R2
otherwise. Sapling, transparent, and TEX addresses have a single encoding.
Sourcepub fn encode_revision<P>(
&self,
params: &P,
ua_revision: Revision,
) -> Result<String, UnifiedEncodingError>where
P: Parameters,
pub fn encode_revision<P>(
&self,
params: &P,
ua_revision: Revision,
) -> Result<String, UnifiedEncodingError>where
P: Parameters,
Returns the string encoding of this Address.
A unified address is encoded with every receiver and metadata item, at the given
ZIP 316 revision. Sapling, transparent, and TEX addresses have a single encoding
and ignore ua_revision.
Returns UnifiedEncodingError::NotRepresentable if this is a unified address
that ua_revision cannot encode in full. Revision::R0 cannot encode expiry
metadata or an address whose only receiver is transparent; every address has a
Revision::R2 encoding.
Sourcepub fn can_receive_as(&self, pool_type: PoolType) -> bool
pub fn can_receive_as(&self, pool_type: PoolType) -> bool
Returns whether or not this Address can receive funds in the specified pool.
Sourcepub fn to_transparent_address(&self) -> Option<TransparentAddress>
pub fn to_transparent_address(&self) -> Option<TransparentAddress>
Returns the transparent address corresponding to this address, if it is a transparent address, a Unified address with a transparent receiver, or ZIP 320 (TEX) address.
Sourcepub fn to_sapling_address(&self) -> Option<PaymentAddress>
Available on crate feature sapling only.
pub fn to_sapling_address(&self) -> Option<PaymentAddress>
sapling only.Returns the Sapling address corresponding to this address, if it is a ZIP 32-encoded Sapling address, or a Unified address with a Sapling receiver.
Sourcepub fn as_understood_unified_receivers(&self) -> Vec<Receiver>
pub fn as_understood_unified_receivers(&self) -> Vec<Receiver>
Returns the protocol-typed unified Receivers of this address as a vector, ignoring the
original encoding of the address.
In the case that the underlying address is the Address::Unified variant, this is
equivalent to UnifiedAddress::as_understood_receivers in that it does not return
unknown receiver data.
Note that this method eliminates the distinction between transparent addresses and the transparent receiving address for a TEX address; as such, it should only be used in cases where address uses are being detected in inspection of chain data, and NOT in any situation where a transaction sending to this address is being constructed.
Trait Implementations§
impl Eq for Address
Source§impl From<UnifiedAddress> for Address
impl From<UnifiedAddress> for Address
Source§fn from(addr: UnifiedAddress) -> Address
fn from(addr: UnifiedAddress) -> Address
impl StructuralPartialEq for Address
Source§impl TryFromAddress for Address
impl TryFromAddress for Address
Source§type Error = &'static str
type Error = &'static str
Self::try_from_sapling as a valid Sapling address).fn try_from_sapling( _net: NetworkType, data: [u8; 43], ) -> Result<Address, ConversionError<<Address as TryFromAddress>::Error>>
fn try_from_unified( _net: NetworkType, ua: Address, ) -> Result<Address, ConversionError<<Address as TryFromAddress>::Error>>
fn try_from_transparent_p2pkh( _net: NetworkType, data: [u8; 20], ) -> Result<Address, ConversionError<<Address as TryFromAddress>::Error>>
fn try_from_transparent_p2sh( _net: NetworkType, data: [u8; 20], ) -> Result<Address, ConversionError<<Address as TryFromAddress>::Error>>
fn try_from_tex( _net: NetworkType, data: [u8; 20], ) -> Result<Address, ConversionError<<Address as TryFromAddress>::Error>>
fn try_from_sprout( net: NetworkType, data: [u8; 64], ) -> Result<Self, ConversionError<Self::Error>>
Auto Trait Implementations§
impl Freeze for Address
impl RefUnwindSafe for Address
impl Send for Address
impl Sync for Address
impl Unpin for Address
impl UnsafeUnpin for Address
impl UnwindSafe for Address
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
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
§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<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
key and return true if they are equal.§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
§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.