account-compression 2.0.0

Solana account compression program
Documentation
use crate::{context::AcpAccount, errors::AccountCompressionErrorCode};

pub fn get_queue_and_tree_accounts<'a, 'b, 'info>(
    accounts: &'b mut [AcpAccount<'a, 'info>],
    queue_index: usize,
    tree_index: usize,
) -> std::result::Result<
    (&'b mut AcpAccount<'a, 'info>, &'b mut AcpAccount<'a, 'info>),
    AccountCompressionErrorCode,
> {
    let (smaller, bigger) = if queue_index < tree_index {
        (queue_index, tree_index)
    } else {
        (tree_index, queue_index)
    };
    let (left, right) = accounts.split_at_mut(bigger);
    let smaller_ref = &mut left[smaller];
    let bigger_ref = &mut right[0];
    Ok(if queue_index < tree_index {
        (smaller_ref, bigger_ref)
    } else {
        (bigger_ref, smaller_ref)
    })
}