pub struct WalletAddress(/* private fields */);Expand description
Value Object: WalletAddress
Represents a cryptocurrency wallet address in the paywall system. Supports Solana addresses (base58 encoded, 32-44 characters).
Domain Rules:
- Cannot be empty
- Must be a valid base58 encoded string
- Must be between 32 and 44 characters (Solana address format)
- Case-sensitive
- Immutable once created
This is a Value Object:
- Defined by its value, not identity
- Immutable
- Self-validating
- Compared by value equality
Implementations§
Source§impl WalletAddress
impl WalletAddress
Sourcepub fn new(value: String) -> Result<Self>
pub fn new(value: String) -> Result<Self>
Create a new WalletAddress with validation
§Errors
Returns error if:
- Address is empty
- Address is not valid base58
- Address is not between 32-44 characters
§Examples
use allsource_core::domain::value_objects::WalletAddress;
// Valid Solana address format
let wallet = WalletAddress::new("9WzDXwBbmkg8ZTbNMqUxvQRAyrZzDsGYdLVL9zYtAWWM".to_string()).unwrap();
assert_eq!(wallet.as_str(), "9WzDXwBbmkg8ZTbNMqUxvQRAyrZzDsGYdLVL9zYtAWWM");Sourcepub fn into_inner(self) -> String
pub fn into_inner(self) -> String
Get the inner String (consumes self)
Sourcepub fn anonymized(&self) -> String
pub fn anonymized(&self) -> String
Get an anonymized version of the wallet address for display
Returns the first 4 and last 4 characters with ellipsis in between.
§Examples
use allsource_core::domain::value_objects::WalletAddress;
let wallet = WalletAddress::new("9WzDXwBbmkg8ZTbNMqUxvQRAyrZzDsGYdLVL9zYtAWWM".to_string()).unwrap();
assert_eq!(wallet.anonymized(), "9WzD...AWWM");Trait Implementations§
Source§impl Clone for WalletAddress
impl Clone for WalletAddress
Source§fn clone(&self) -> WalletAddress
fn clone(&self) -> WalletAddress
Returns a duplicate of the value. Read more
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
Performs copy-assignment from
source. Read moreSource§impl Debug for WalletAddress
impl Debug for WalletAddress
Source§impl<'de> Deserialize<'de> for WalletAddress
impl<'de> Deserialize<'de> for WalletAddress
Source§fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
Deserialize this value from the given Serde deserializer. Read more
Source§impl Display for WalletAddress
impl Display for WalletAddress
Source§impl Hash for WalletAddress
impl Hash for WalletAddress
Source§impl PartialEq for WalletAddress
impl PartialEq for WalletAddress
Source§impl Serialize for WalletAddress
impl Serialize for WalletAddress
Source§impl TryFrom<&str> for WalletAddress
impl TryFrom<&str> for WalletAddress
Source§impl TryFrom<String> for WalletAddress
impl TryFrom<String> for WalletAddress
impl Eq for WalletAddress
impl StructuralPartialEq for WalletAddress
Auto Trait Implementations§
impl Freeze for WalletAddress
impl RefUnwindSafe for WalletAddress
impl Send for WalletAddress
impl Sync for WalletAddress
impl Unpin for WalletAddress
impl UnwindSafe for WalletAddress
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
Mutably borrows from an owned value. Read more
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
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
Compare self to
key and return true if they are equal.Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> 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>
Converts
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>
Converts
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 moreSource§impl<T> Pointable for T
impl<T> Pointable for T
Source§impl<T> PolicyExt for Twhere
T: ?Sized,
impl<T> PolicyExt for Twhere
T: ?Sized,
Source§impl<T> ToStringFallible for Twhere
T: Display,
impl<T> ToStringFallible for Twhere
T: Display,
Source§fn try_to_string(&self) -> Result<String, TryReserveError>
fn try_to_string(&self) -> Result<String, TryReserveError>
ToString::to_string, but without panic on OOM.