diff --git a/rust_backend/crates/mobile/src/network_tags.rs b/rust_backend/crates/mobile/src/network_tags.rs index 531f0331..67b62e5f 100644 --- a/rust_backend/crates/mobile/src/network_tags.rs +++ b/rust_backend/crates/mobile/src/network_tags.rs @@ -229,6 +229,19 @@ impl Read for RangeReader<'_> { } } +impl Seek for RangeReader<'_> { + fn seek(&mut self, position: SeekFrom) -> io::Result { + let next = match position { + SeekFrom::Start(n) => i128::from(n), + SeekFrom::Current(n) => i128::from(self.position) + i128::from(n), + SeekFrom::End(n) => i128::from(self.size) + i128::from(n), + }; + self.position = + u64::try_from(next).map_err(|_| io::Error::other("invalid metadata seek"))?; + Ok(self.position) + } +} + #[cfg(test)] mod tests { use super::*; @@ -411,16 +424,3 @@ mod tests { assert!(read(&fixture.url, "song.flac", &|| Ok(())).is_err()); } } - -impl Seek for RangeReader<'_> { - fn seek(&mut self, position: SeekFrom) -> io::Result { - let next = match position { - SeekFrom::Start(n) => i128::from(n), - SeekFrom::Current(n) => i128::from(self.position) + i128::from(n), - SeekFrom::End(n) => i128::from(self.size) + i128::from(n), - }; - self.position = - u64::try_from(next).map_err(|_| io::Error::other("invalid metadata seek"))?; - Ok(self.position) - } -}