hdp_primitives/task/datalake/transactions/
rand.rs

1use rand::distributions::{Distribution, Standard};
2
3use crate::task::datalake::DatalakeField;
4
5use super::{TransactionField, TransactionReceiptField, TransactionsCollection};
6
7impl Distribution<TransactionsCollection> for Standard {
8    fn sample<R: rand::prelude::Rng + ?Sized>(&self, rng: &mut R) -> TransactionsCollection {
9        // TODO: For now receipt doesn't support in Cairo
10        let index: u8 = rng.gen_range(0..1);
11        match index {
12            0 => TransactionsCollection::Transactions(self.sample(rng)),
13            1 => TransactionsCollection::TranasactionReceipts(self.sample(rng)),
14            _ => unreachable!(),
15        }
16    }
17}
18
19impl Distribution<TransactionField> for Standard {
20    fn sample<R: rand::prelude::Rng + ?Sized>(&self, rng: &mut R) -> TransactionField {
21        let index: u8 = rng.gen_range(0..=6_u8);
22        TransactionField::integer_variants_index(index)
23    }
24}
25
26impl Distribution<TransactionReceiptField> for Standard {
27    fn sample<R: rand::prelude::Rng + ?Sized>(&self, rng: &mut R) -> TransactionReceiptField {
28        let index: u8 = rng.gen_range(0..=1_u8);
29        TransactionReceiptField::from_index(index).unwrap()
30    }
31}