match allocation.as_mut() {
Some(Allocation { balance, id, .. }) => (balance, *id),
None => continue,
}
} else if let Some(claim) = claim(id) {
match mintable.get_mut(&claim) {
Some(balance) => (balance, claim),
None => continue,
}
} else {
// Get the unallocated balance of the given ID
match unallocated.get_mut(&id) {
Some(balance) => (balance, id),
None => continue,
}
};
let mut allocate = |balance: &mut u128, amount: u128, output: usize| {
if amount > 0 {
*balance -= amount;
*allocated[output].entry(id).or_default() += amount;
}
};
if output == tx.output.len() {
// find non-OP_RETURN outputs
let destinations = tx
.output
.iter()
.enumerate()
.filter_map(|(output, tx_out)| {