casper_types/transaction/
transfer_target.rs1#[cfg(any(feature = "testing", test))]
2use rand::Rng;
3
4#[cfg(any(feature = "testing", test))]
5use crate::testing::TestRng;
6use crate::{account::AccountHash, PublicKey, URef};
7
8#[derive(Clone, Ord, PartialOrd, Eq, PartialEq, Debug)]
10pub enum TransferTarget {
11 PublicKey(PublicKey),
13 AccountHash(AccountHash),
15 URef(URef),
17}
18
19impl TransferTarget {
20 #[cfg(any(feature = "testing", test))]
22 pub fn random(rng: &mut TestRng) -> Self {
23 match rng.gen_range(0..3) {
24 0 => TransferTarget::PublicKey(PublicKey::random(rng)),
25 1 => TransferTarget::AccountHash(rng.gen()),
26 2 => TransferTarget::URef(rng.gen()),
27 _ => unreachable!(),
28 }
29 }
30}
31
32impl From<PublicKey> for TransferTarget {
33 fn from(public_key: PublicKey) -> Self {
34 Self::PublicKey(public_key)
35 }
36}
37
38impl From<AccountHash> for TransferTarget {
39 fn from(account_hash: AccountHash) -> Self {
40 Self::AccountHash(account_hash)
41 }
42}
43
44impl From<URef> for TransferTarget {
45 fn from(uref: URef) -> Self {
46 Self::URef(uref)
47 }
48}