···2222///
2323/// R should be buffered in some way and not do a syscall on every read.
2424/// If you ever find yourself using multiple different reader and/or handlers please open an issue on Github, i will change this to take &dyn.
2525-pub fn parse_song<R: std::io::Read + std::io::Seek, H: FnMut(LoadDefect)>(
2525+pub fn parse_song<R: std::io::Read + std::io::Seek>(
2626 reader: &mut R,
2727- defect_handler: &mut H,
2827) -> Result<Song<false>, LoadErr> {
2929- let header = header::ImpulseHeader::parse(reader, defect_handler)?;
2828+ //ignore defects
2929+ let mut defect_handler = |_| ();
3030+ let header = header::ImpulseHeader::parse(reader, &mut defect_handler)?;
3031 let mut song = Song::default();
3132 song.copy_values_from_header(&header);
3233···3839 .flat_map(|(idx, ptr)| ptr.map(|ptr| (idx, ptr)))
3940 {
4041 ptr.move_to_self(reader)?;
4141- let pattern = pattern::parse_pattern(reader, defect_handler)?;
4242+ let pattern = pattern::parse_pattern(reader, &mut defect_handler)?;
4243 song.patterns[idx] = pattern;
4344 }
4445