INNER CODE UNIT · Rust
cleanup
informationsea/transanno · liftover-rs/src/chain/mod.rs:88
fn cleanup(chain_interval: &[ChainInterval]) -> Vec<ChainInterval> {
if chain_interval.is_empty() {
return Vec::new();
}
chain_interval.iter().fold(Vec::new(), |mut acc, x| {
if let Some(last) = acc.pop() {
if last.difference_new.unwrap_or(0) == 0
&& last.difference_original.unwrap_or(0) == 0
{
acc.push(ChainInterval {
size: last.size + x.size,
difference_new: x.difference_new,
difference_original: x.difference_original,
});
} else if x.size == 0 {
acc.push(ChainInterval {
size: last.size,