rarity, name, }); } Ok(Box::new(outputs)) } Some(crate::index::List::Spent) => Err(anyhow!("output spent.")), None => Err(anyhow!("output not found")), } } } fn list(outpoint: OutPoint, ranges: Vec<(u64, u64)>) -> Vec { let mut offset = 0; ranges .into_iter() .map(|(start, end)| { let size = end - start; let output = Output { output: outpoint, start, end, size, offset, name: Sat(start).name(), rarity: Sat(start).rarity(), }; offset += size; output }) .collect() } #[cfg(test)] mod tests { use super::*; fn output( output: OutPoint, start: u64, end: u64, size: u64, offset: u64, rarity: Rarity, name: String, ) -> super::Output { super::Output { output, start, end, size, offset, name, rarity, } } #[test] fn list_ranges() { let outpoint =