UserAccount use builder pattern

Signed-off-by: kernelkind <kernelkind@gmail.com>
This commit is contained in:
kernelkind
2025-04-16 17:13:11 -04:00
parent 5bddf83655
commit 200ef58912

View File

@@ -13,11 +13,9 @@ impl UserAccount {
Self { key, wallet: None } Self { key, wallet: None }
} }
pub fn new_with_wallet(key: Keypair, wallet: Wallet) -> Self { pub fn with_wallet(mut self, wallet: Wallet) -> Self {
Self { self.wallet = Some(wallet);
key, self
wallet: Some(wallet),
}
} }
} }
@@ -58,10 +56,10 @@ impl TokenSerializable for UserAccount {
return Err(ParseError::DecodeFailed); return Err(ParseError::DecodeFailed);
}; };
let user_acc = if let Some(wallet) = m_wallet { let mut user_acc = UserAccount::new(key);
UserAccount::new_with_wallet(key, wallet)
} else { if let Some(wallet) = m_wallet {
UserAccount::new(key) user_acc = user_acc.with_wallet(wallet);
}; };
Ok(user_acc) Ok(user_acc)
@@ -93,7 +91,7 @@ mod tests {
fn test_user_account_serialize_deserialize() { fn test_user_account_serialize_deserialize() {
let kp = FullKeypair::generate(); let kp = FullKeypair::generate();
let acc = let acc =
UserAccount::new_with_wallet(kp.to_keypair(), Wallet::new(URI.to_owned()).unwrap()); UserAccount::new(kp.to_keypair()).with_wallet(Wallet::new(URI.to_owned()).unwrap());
let mut writer = TokenWriter::new("\t"); let mut writer = TokenWriter::new("\t");
acc.serialize_tokens(&mut writer); acc.serialize_tokens(&mut writer);