Add DSC decompress support

This commit is contained in:
2025-06-12 11:49:08 +08:00
parent d6b6ea32a7
commit 71cdebadd3
6 changed files with 319 additions and 3 deletions

View File

@@ -1 +1,2 @@
pub mod io;
pub mod vec;

22
src/ext/vec.rs Normal file
View File

@@ -0,0 +1,22 @@
pub trait VecExt<T> {
/// Copy potentially overlapping sequence of elements from `src` to `dst`.
fn copy_overlapped(&mut self, src: usize, dst: usize, len: usize);
}
impl<T: Copy> VecExt<T> for Vec<T> {
fn copy_overlapped(&mut self, src: usize, dst: usize, len: usize) {
let src = src.min(self.len());
let dst = dst.min(self.len());
if src < dst {
let max_count = len.min(dst - src);
for i in 0..max_count {
self[dst + i] = self[src + i];
}
} else {
let max_count = len.min(src - dst);
for i in (0..max_count).rev() {
self[dst + i] = self[src + i];
}
}
}
}