mirror of
https://github.com/lifegpc/msg-tool.git
synced 2026-06-10 15:12:57 +08:00
Impl better to_data for some archive entry
This commit is contained in:
@@ -138,7 +138,8 @@ struct BgiFileHeader {
|
||||
_padding: Vec<u8>,
|
||||
}
|
||||
|
||||
struct Entry<T: Read + Seek> {
|
||||
#[derive(Debug)]
|
||||
struct Entry<T: Read + Seek + std::fmt::Debug> {
|
||||
header: BgiFileHeader,
|
||||
reader: Arc<Mutex<T>>,
|
||||
pos: usize,
|
||||
@@ -146,7 +147,7 @@ struct Entry<T: Read + Seek> {
|
||||
script_type: Option<ScriptType>,
|
||||
}
|
||||
|
||||
impl<T: Read + Seek> ArchiveContent for Entry<T> {
|
||||
impl<T: Read + Seek + std::fmt::Debug + Send + Sync> ArchiveContent for Entry<T> {
|
||||
fn name(&self) -> &str {
|
||||
&self.header.filename
|
||||
}
|
||||
@@ -154,9 +155,13 @@ impl<T: Read + Seek> ArchiveContent for Entry<T> {
|
||||
fn script_type(&self) -> Option<&ScriptType> {
|
||||
self.script_type.as_ref()
|
||||
}
|
||||
|
||||
fn to_data<'a>(&'a mut self) -> Result<Box<dyn ReadSeek + Send + Sync + 'a>> {
|
||||
Ok(Box::new(self))
|
||||
}
|
||||
}
|
||||
|
||||
impl<T: Read + Seek> Read for Entry<T> {
|
||||
impl<T: Read + Seek + std::fmt::Debug> Read for Entry<T> {
|
||||
fn read(&mut self, buf: &mut [u8]) -> std::io::Result<usize> {
|
||||
let mut reader = self.reader.lock().map_err(|e| {
|
||||
std::io::Error::new(
|
||||
@@ -177,7 +182,7 @@ impl<T: Read + Seek> Read for Entry<T> {
|
||||
}
|
||||
}
|
||||
|
||||
impl<T: Read + Seek> Seek for Entry<T> {
|
||||
impl<T: Read + Seek + std::fmt::Debug> Seek for Entry<T> {
|
||||
fn seek(&mut self, pos: SeekFrom) -> std::io::Result<u64> {
|
||||
let new_pos = match pos {
|
||||
SeekFrom::Start(offset) => offset as usize,
|
||||
|
||||
@@ -140,7 +140,8 @@ struct BgiFileHeader {
|
||||
_padding: Vec<u8>,
|
||||
}
|
||||
|
||||
struct Entry<T: Read + Seek> {
|
||||
#[derive(Debug)]
|
||||
struct Entry<T: Read + Seek + std::fmt::Debug> {
|
||||
header: BgiFileHeader,
|
||||
reader: Arc<Mutex<T>>,
|
||||
pos: usize,
|
||||
@@ -148,7 +149,7 @@ struct Entry<T: Read + Seek> {
|
||||
script_type: Option<ScriptType>,
|
||||
}
|
||||
|
||||
impl<T: Read + Seek> ArchiveContent for Entry<T> {
|
||||
impl<T: Read + Seek + std::fmt::Debug + Send + Sync> ArchiveContent for Entry<T> {
|
||||
fn name(&self) -> &str {
|
||||
&self.header.filename
|
||||
}
|
||||
@@ -156,9 +157,13 @@ impl<T: Read + Seek> ArchiveContent for Entry<T> {
|
||||
fn script_type(&self) -> Option<&ScriptType> {
|
||||
self.script_type.as_ref()
|
||||
}
|
||||
|
||||
fn to_data<'a>(&'a mut self) -> Result<Box<dyn ReadSeek + Send + Sync + 'a>> {
|
||||
Ok(Box::new(self))
|
||||
}
|
||||
}
|
||||
|
||||
impl<T: Read + Seek> Read for Entry<T> {
|
||||
impl<T: Read + Seek + std::fmt::Debug> Read for Entry<T> {
|
||||
fn read(&mut self, buf: &mut [u8]) -> std::io::Result<usize> {
|
||||
let mut reader = self.reader.lock().map_err(|e| {
|
||||
std::io::Error::new(
|
||||
@@ -179,7 +184,7 @@ impl<T: Read + Seek> Read for Entry<T> {
|
||||
}
|
||||
}
|
||||
|
||||
impl<T: Read + Seek> Seek for Entry<T> {
|
||||
impl<T: Read + Seek + std::fmt::Debug> Seek for Entry<T> {
|
||||
fn seek(&mut self, pos: SeekFrom) -> std::io::Result<u64> {
|
||||
let new_pos = match pos {
|
||||
SeekFrom::Start(offset) => offset as usize,
|
||||
|
||||
Reference in New Issue
Block a user