fn begin_merge(batch1: Option<B>, batch2: Option<B>) -> MergeState<B> {
        let variant = match (batch1, batch2) {
            (Some(batch1), Some(batch2)) => {
                // Leonid: we do not require batch bounds to grow monotonically.
                //assert!(batch1.upper() == batch2.lower());

                let begin_merge = <B as Batch>::begin_merge(&batch1, &batch2);
                MergeVariant::InProgress(batch1, batch2, begin_merge)
            }
            (None, Some(x)) => MergeVariant::Complete(Some(x)),
            (Some(x), None) => MergeVariant::Complete(Some(x)),
            (None, None) => MergeVariant::Complete(None),
        };

        MergeState::Double(variant)
    }
/// Initiates the merge of an "old" batch with a "new" batch.
///
/// The upper frontier of the old batch should match the lower
/// frontier of the new batch, with the resulting batch describing
/// their composed interval, from the lower frontier of the old
/// batch to the upper frontier of the new batch.
///
/// Either batch may be `None` which corresponds to a structurally
/// empty batch whose upper and lower froniers are equal. This
/// option exists purely for bookkeeping purposes, and no computation
/// is performed to merge the two batches.
Initiates the merge of an "old" batch with a "new" batch.
The upper frontier of the old batch should match the lower
frontier of the new batch, with the resulting batch describing
their composed interval, from the lower frontier of the old
batch to the upper frontier of the new batch.

Either batch may be `None` which corresponds to a structurally
empty batch whose upper and lower froniers are equal. This
option exists purely for bookkeeping purposes, and no computation
is performed to merge the two batches.
Initiates the merge of an " old " batch with a " new " batch . The upper frontier of the old batch should match the lower frontier of the new batch with the resulting batch describing their composed interval from the lower frontier of the old batch to the upper frontier of the new batch . Either batch may be ` None ` which corresponds to a structurally empty batch whose upper and lower froniers are equal . This option exists purely for bookkeeping purposes and no computation is performed to merge the two batches .
fn begin_merge(batch1: Option<B>, batch2: Option<B>) -> MergeState<B> {
        let variant = match (batch1, batch2) {
            (Some(batch1), Some(batch2)) => {
                // Leonid: we do not require batch bounds to grow monotonically.
                //assert!(batch1.upper() == batch2.lower());
                let begin_merge = <B as Batch>::begin_merge(&batch1, &batch2);
                MergeVariant::InProgress(batch1, batch2, begin_merge)
            }
            (None, Some(x)) => MergeVariant::Complete(Some(x)),
            (Some(x), None) => MergeVariant::Complete(Some(x)),
            (None, None) => MergeVariant::Complete(None),
        };
        MergeState::Double(variant)
    }
fn begin_merge ( batch1 : Option < B > , batch2 : Option < B > ) -> MergeState < B > { let variant = match ( batch1 , batch2 ) { ( Some ( batch1 ) , Some ( batch2 ) ) => { // Leonid: we do not require batch bounds to grow monotonically. //assert!(batch1.upper() == batch2.lower()); let begin_merge = < B as Batch > :: begin_merge ( & batch1 , & batch2 ) ; MergeVariant :: InProgress ( batch1 , batch2 , begin_merge ) } ( None , Some ( x ) ) => MergeVariant :: Complete ( Some ( x ) ) , ( Some ( x ) , None ) => MergeVariant :: Complete ( Some ( x ) ) , ( None , None ) => MergeVariant :: Complete ( None ) , } ; MergeState :: Double ( variant ) }
Initiates the merge of an "old" batch with a "new" batch.
Initiates the merge of an " old " batch with a " new " batch .
batch1
Option<B>
batch2
Option<B>