pub struct Address<T: IsAddressKind>(/* private fields */);Expand description
An address captures spending and delegation conditions of assets in the network.
Addresses can be one of two kind:
kind::Byron: legacy, not longer used. Also called “bootstrap” addresses sometimes.kind::Shelley: most used and modern format, which can bear delegation rights.
An Address can be constructed in a variety of ways.
-
Either directly using the provided builder:
-
Using the
address!oraddress_test!macros. -
Or by converting from another representation (e.g. bech32, base58 or base16 text strings, or raw bytes):
// Parse a string as Shelley address; will fail if presented with a Byron address: assert!( <Address<kind::Shelley>>::try_from( "addr1v83gkkw3nqzakg5xynlurqcfqhgd65vkfvf5xv8tx25ufds2yvy2h" ).is_ok() ); assert!( <Address<kind::Shelley>>::try_from( "Ae2tdPwUPEYwNguM7TB3dMnZMfZxn1pjGHyGdjaF4mFqZF9L3bj6cdhiH8t" ).is_err() );// Parse a string as any address; will also success on Byron addresses: assert!( <Address<kind::Any>>::try_from( "addr1v83gkkw3nqzakg5xynlurqcfqhgd65vkfvf5xv8tx25ufds2yvy2h" ).is_ok() ); assert!( <Address<kind::Any>>::try_from( "Ae2tdPwUPEYwNguM7TB3dMnZMfZxn1pjGHyGdjaF4mFqZF9L3bj6cdhiH8t" ).is_ok() );// Also work with base16 encoded addresses: assert!( <Address<kind::Shelley>>::try_from( "61e28b59d19805db228624ffc1830905d0dd51964b134330eb32a9c4b6" ).is_ok() );
Implementations§
Source§impl Address<Shelley>
impl Address<Shelley>
Sourcepub fn new(network: NetworkId, payment: Credential) -> Self
pub fn new(network: NetworkId, payment: Credential) -> Self
See also address!/address_test!
Sourcepub fn with_delegation(self, delegation: Credential) -> Self
pub fn with_delegation(self, delegation: Credential) -> Self
See also address!/address_test!
Source§impl Address<Shelley>
impl Address<Shelley>
pub fn network_id(&self) -> NetworkId
pub fn payment(&self) -> Credential
pub fn delegation(&self) -> Option<Credential>
Source§impl<T: IsAddressKind> Address<T>
impl<T: IsAddressKind> Address<T>
Sourcepub fn is_byron(&self) -> bool
pub fn is_byron(&self) -> bool
Check whether an address is a kind::Byron address. To carry this proof at the
type-level, use Self::as_byron.
§examples
assert_eq!(
address!(
"37btjrVyb4KDXBNC4haBVPCrro8AQPHwvCMp3R\
FhhSVWwfFmZ6wwzSK6JK1hY6wHNmtrpTf1kdbv\
a8TCneM2YsiXT7mrzT21EacHnPpz5YyUdj64na"
).is_byron(),
true,
);assert_eq!(
address!("addr1v83gkkw3nqzakg5xynlurqcfqhgd65vkfvf5xv8tx25ufds2yvy2h").is_byron(),
false,
);Sourcepub fn as_byron(&self) -> Option<Address<Byron>>
pub fn as_byron(&self) -> Option<Address<Byron>>
Refine the kind of the address, assuming it is a kind::Byron to enable specific methods
for this kind.
Sourcepub fn is_shelley(&self) -> bool
pub fn is_shelley(&self) -> bool
Check whether an address is a kind::Byron address. To carry this proof at the
type-level, use Self::as_shelley.
§examples
assert_eq!(
address!(
"37btjrVyb4KDXBNC4haBVPCrro8AQPHwvCMp3R\
FhhSVWwfFmZ6wwzSK6JK1hY6wHNmtrpTf1kdbv\
a8TCneM2YsiXT7mrzT21EacHnPpz5YyUdj64na"
).is_shelley(),
false,
);assert_eq!(
address!("addr1v83gkkw3nqzakg5xynlurqcfqhgd65vkfvf5xv8tx25ufds2yvy2h").is_shelley(),
true,
);Sourcepub fn as_shelley(&self) -> Option<Address<Shelley>>
pub fn as_shelley(&self) -> Option<Address<Shelley>>
Refine the kind of the address, assuming it is a kind::Shelley to enable specific methods
for this kind.
Trait Implementations§
Source§impl<T: IsAddressKind> Display for Address<T>
impl<T: IsAddressKind> Display for Address<T>
Source§impl<T: IsAddressKind> FromStr for Address<T>
impl<T: IsAddressKind> FromStr for Address<T>
Source§impl<T: IsAddressKind + Eq> Ord for Address<T>
impl<T: IsAddressKind + Eq> Ord for Address<T>
Source§impl<T: IsAddressKind + Eq> PartialOrd for Address<T>
impl<T: IsAddressKind + Eq> PartialOrd for Address<T>
impl<T: Eq + IsAddressKind> Eq for Address<T>
impl<T: IsAddressKind> StructuralPartialEq for Address<T>
Auto Trait Implementations§
impl<T> Freeze for Address<T>
impl<T> RefUnwindSafe for Address<T>where
T: RefUnwindSafe,
impl<T> Send for Address<T>where
T: Send,
impl<T> Sync for Address<T>where
T: Sync,
impl<T> Unpin for Address<T>where
T: Unpin,
impl<T> UnwindSafe for Address<T>where
T: UnwindSafe,
Blanket Implementations§
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
Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
key and return true if they are equal.§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,
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> 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> 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.