kaspa-consensusmanager 0.15.0

Kaspa consensus library
Documentation
use kaspa_consensus_core::{api::BlockValidationFuture, block::Block};
use std::fmt::Debug;

pub struct BlockProcessingBatch {
    pub blocks: Vec<Block>,
    pub block_tasks: Option<Vec<BlockValidationFuture>>,
    pub virtual_state_tasks: Option<Vec<BlockValidationFuture>>,
}

impl BlockProcessingBatch {
    pub fn new(blocks: Vec<Block>, block_tasks: Vec<BlockValidationFuture>, virtual_state_tasks: Vec<BlockValidationFuture>) -> Self {
        Self { blocks, block_tasks: Some(block_tasks), virtual_state_tasks: Some(virtual_state_tasks) }
    }

    pub fn zip(self) -> impl Iterator<Item = (Block, BlockValidationFuture)> {
        self.blocks.into_iter().zip(self.virtual_state_tasks.unwrap())
    }
}

impl Default for BlockProcessingBatch {
    fn default() -> Self {
        Self { blocks: Default::default(), block_tasks: Some(Default::default()), virtual_state_tasks: Some(Default::default()) }
    }
}

impl Debug for BlockProcessingBatch {
    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
        f.debug_struct("BlockProcessingBatch").field("blocks", &self.blocks).finish()
    }
}