pub struct UnifiedAddress { /* private fields */ }Expand description
A Unified Address.
Implementations§
Source§impl UnifiedAddress
impl UnifiedAddress
Sourcepub fn from_receivers(
orchard: Option<Address>,
sapling: Option<PaymentAddress>,
transparent: Option<TransparentAddress>,
expiry_height: Option<BlockHeight>,
expiry_time: Option<u64>,
) -> Option<UnifiedAddress>
pub fn from_receivers( orchard: Option<Address>, sapling: Option<PaymentAddress>, transparent: Option<TransparentAddress>, expiry_height: Option<BlockHeight>, expiry_time: Option<u64>, ) -> Option<UnifiedAddress>
Constructs a Unified Address from a given set of receivers.
Returns None if the receivers would produce an invalid Unified Address (namely,
if no receiver at all is provided). At least one receiver (transparent or shielded)
must be present.
An address whose only receiver is transparent has an encoding only at ZIP 316
Revision 2, as a transparent-including (tu) address.
Sourcepub fn has_orchard(&self) -> bool
pub fn has_orchard(&self) -> bool
Returns whether this address has an Orchard receiver.
This method is available irrespective of whether the orchard feature flag is enabled.
Sourcepub fn orchard(&self) -> Option<&Address>
Available on crate feature orchard only.
pub fn orchard(&self) -> Option<&Address>
orchard only.Returns the Orchard receiver within this Unified Address, if any.
Sourcepub fn has_sapling(&self) -> bool
pub fn has_sapling(&self) -> bool
Returns whether this address has a Sapling receiver.
Sourcepub fn sapling(&self) -> Option<&PaymentAddress>
Available on crate feature sapling only.
pub fn sapling(&self) -> Option<&PaymentAddress>
sapling only.Returns the Sapling receiver within this Unified Address, if any.
Sourcepub fn has_transparent(&self) -> bool
pub fn has_transparent(&self) -> bool
Returns whether this address has a Transparent receiver.
Sourcepub fn transparent(&self) -> Option<&TransparentAddress>
pub fn transparent(&self) -> Option<&TransparentAddress>
Returns the transparent receiver within this Unified Address, if any.
Sourcepub fn unknown(&self) -> &[(u32, Vec<u8>)]
pub fn unknown(&self) -> &[(u32, Vec<u8>)]
Returns the set of unknown receivers of the unified address.
Sourcepub fn expiry_height(&self) -> Option<BlockHeight>
pub fn expiry_height(&self) -> Option<BlockHeight>
Returns the expiry height metadata for this address, if present.
Sourcepub fn expiry_time(&self) -> Option<u64>
pub fn expiry_time(&self) -> Option<u64>
Returns the expiry time metadata for this address, if present.
Sourcepub fn prune_retaining(
&self,
item_types: &[Typecode],
) -> Result<Option<UnifiedAddress>, PruneError>
pub fn prune_retaining( &self, item_types: &[Typecode], ) -> Result<Option<UnifiedAddress>, PruneError>
Returns a copy of this address that holds only the items whose types are in
item_types.
The result omits each receiver and each SHOULD-understand metadata item whose type
is not in item_types. Use this to share an address with fewer receivers, for
example one without its transparent receiver.
Returns Ok(None) if no receiver of this address has a type in item_types,
because a unified address must hold at least one receiver.
Returns PruneError::MustUnderstandMetadata if this address holds a ZIP 316
MUST-understand metadata item, such as an expiry height or an expiry time, whose
type is not in item_types. Removal of such an item changes the meaning of the
address.
Returns PruneError::NotRepresentable if the pruned address has no encoding at
any revision.
Sourcepub fn decode<P>(
params: &P,
address: &str,
) -> Result<UnifiedAddress, UnifiedDecodingError>where
P: Parameters,
pub fn decode<P>(
params: &P,
address: &str,
) -> Result<UnifiedAddress, UnifiedDecodingError>where
P: Parameters,
Parses a UnifiedAddress from its ZIP 316 string encoding at any revision.
§Errors
UnifiedDecodingError::Parseif the string is not a valid unified address.UnifiedDecodingError::NetworkMismatchif the address is for a network other than that ofparams.UnifiedDecodingError::InvalidItemif a receiver’s data is not a valid receiver of its type.
Sourcepub fn to_zcash_address(&self, net: NetworkType) -> ZcashAddress
pub fn to_zcash_address(&self, net: NetworkType) -> ZcashAddress
Serializes this UnifiedAddress as a ZcashAddress for the given network.
The encoding contains every receiver and metadata item of this address. It uses
ZIP 316 Revision::R0 if that revision can represent the address, and
Revision::R2 otherwise. At Revision::R2, an address with a transparent
receiver uses the transparent-including (tu) form, and an address without one
uses the shielded-only (zu) form. To encode only some of the receivers, first
call UnifiedAddress::prune_retaining.
Sourcepub fn to_zcash_address_revision(
&self,
net: NetworkType,
revision: Revision,
) -> Result<ZcashAddress, UnifiedEncodingError>
pub fn to_zcash_address_revision( &self, net: NetworkType, revision: Revision, ) -> Result<ZcashAddress, UnifiedEncodingError>
Serializes this UnifiedAddress as a ZcashAddress for the given network at
the given ZIP 316 revision.
The encoding contains every receiver and metadata item of this address. At
Revision::R2, an address with a transparent receiver uses the
transparent-including (tu) form, and an address without one uses the
shielded-only (zu) form.
Returns UnifiedEncodingError::NotRepresentable if revision cannot encode
every receiver and metadata item of this address. Revision::R0 cannot encode
expiry metadata or an address whose only receiver is transparent; every address
has a Revision::R2 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 UnifiedAddress for the given network.
The encoding contains every receiver and metadata item of this address. It uses
ZIP 316 Revision::R0 if that revision can represent the address, and
Revision::R2 otherwise. At Revision::R2, an address with a transparent
receiver uses the transparent-including (tu) form, and an address without one
uses the shielded-only (zu) form.
Sourcepub fn encode_revision<P>(
&self,
params: &P,
revision: Revision,
) -> Result<String, UnifiedEncodingError>where
P: Parameters,
pub fn encode_revision<P>(
&self,
params: &P,
revision: Revision,
) -> Result<String, UnifiedEncodingError>where
P: Parameters,
Returns the string encoding of this UnifiedAddress for the given network at the
given ZIP 316 revision.
The encoding contains every receiver and metadata item of this address. At
Revision::R2, an address with a transparent receiver uses the
transparent-including (tu) form, and an address without one uses the
shielded-only (zu) form.
Returns UnifiedEncodingError::NotRepresentable if revision cannot encode
every receiver and metadata item of this address. Revision::R0 cannot encode
expiry metadata or an address whose only receiver is transparent; every address
has a Revision::R2 encoding.
Sourcepub fn receiver_types(&self) -> Vec<Typecode>
pub fn receiver_types(&self) -> Vec<Typecode>
Returns the set of receiver typecodes.
Sourcepub fn as_understood_receivers(&self) -> Vec<Receiver>
pub fn as_understood_receivers(&self) -> Vec<Receiver>
Returns the set of receivers in the unified address, excluding unknown receiver types.
Trait Implementations§
Source§impl Clone for UnifiedAddress
impl Clone for UnifiedAddress
Source§fn clone(&self) -> UnifiedAddress
fn clone(&self) -> UnifiedAddress
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreSource§impl Debug for UnifiedAddress
impl Debug for UnifiedAddress
impl Eq for UnifiedAddress
Source§impl From<UnifiedAddress> for Address
impl From<UnifiedAddress> for Address
Source§fn from(addr: UnifiedAddress) -> Address
fn from(addr: UnifiedAddress) -> Address
Source§impl PartialEq for UnifiedAddress
impl PartialEq for UnifiedAddress
impl StructuralPartialEq for UnifiedAddress
Auto Trait Implementations§
impl Freeze for UnifiedAddress
impl RefUnwindSafe for UnifiedAddress
impl Send for UnifiedAddress
impl Sync for UnifiedAddress
impl Unpin for UnifiedAddress
impl UnsafeUnpin for UnifiedAddress
impl UnwindSafe for UnifiedAddress
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.