#[cfg(feature = "choose-random-zero")]
fn main() {
use zerocopy_bitslice::ZeroCopyBitSlice;
const MOCK_OFFSET: usize = 100;
const MOCK_END_BUFFER: usize = 100;
const NUM_ITEMS: u32 = 100;
let required_space: usize = ZeroCopyBitSlice::required_space(NUM_ITEMS);
let mut mock_minter: Vec<u8> = vec![0; MOCK_OFFSET + required_space + MOCK_END_BUFFER];
let mut zcbs_bytes: &mut [u8] = &mut mock_minter[MOCK_OFFSET..];
let mut zcbs: ZeroCopyBitSlice = ZeroCopyBitSlice::intialize_in(NUM_ITEMS, &mut zcbs_bytes);
let mut sequence: [u32; NUM_ITEMS as usize] = std::array::from_fn(|_a_new_minter_appears| {
let mock_time: i64 = 123456890;
let mock_time_bytes: [u8; 8] = mock_time.to_le_bytes();
let mock_time_seed: [u8; 32] = core::array::from_fn(|i| mock_time_bytes[i % 8]);
let mock_slothash: [u8; 32] = core::array::from_fn(|i| i as u8);
let mock_minter_pubkey: [u8; 32] = core::array::from_fn(|i| i as u8);
let seed: [u8; 32] =
core::array::from_fn(|i| mock_time_seed[i] ^ mock_slothash[i] ^ mock_minter_pubkey[i]);
zcbs.choose_random_zero(seed)
.expect("we are minting exactly the right number of items")
});
println!("random sequence is {sequence:?}");
sequence.sort();
println!("sorted sequence is {sequence:?}");
}
#[cfg(not(feature = "choose-random-zero"))]
fn main() {}