src/pxar/decoder.rs: require Send

This commit is contained in:
Dietmar Maurer 2019-12-16 09:58:26 +01:00
parent bb084b9c91
commit b9799012cf
2 changed files with 6 additions and 6 deletions

View File

@ -33,7 +33,7 @@ impl <R: Read + Seek> ReadSeek for R {}
// This one needs Read+Seek // This one needs Read+Seek
pub struct Decoder { pub struct Decoder {
inner: SequentialDecoder<Box<dyn ReadSeek>>, inner: SequentialDecoder<Box<dyn ReadSeek + Send>>,
root_start: u64, root_start: u64,
root_end: u64, root_end: u64,
} }
@ -42,15 +42,15 @@ const HEADER_SIZE: u64 = std::mem::size_of::<PxarHeader>() as u64;
const GOODBYE_ITEM_SIZE: u64 = std::mem::size_of::<PxarGoodbyeItem>() as u64; const GOODBYE_ITEM_SIZE: u64 = std::mem::size_of::<PxarGoodbyeItem>() as u64;
impl Decoder { impl Decoder {
pub fn new<R: Read + Seek + 'static>(mut reader: R) -> Result<Self, Error> { pub fn new<R: Read + Seek + Send + 'static>(mut reader: R) -> Result<Self, Error> {
let root_end = reader.seek(SeekFrom::End(0))?; let root_end = reader.seek(SeekFrom::End(0))?;
let boxed_reader: Box<dyn ReadSeek + 'static> = Box::new(reader); let boxed_reader: Box<dyn ReadSeek + 'static + Send> = Box::new(reader);
let inner = SequentialDecoder::new(boxed_reader, super::flags::DEFAULT); let inner = SequentialDecoder::new(boxed_reader, super::flags::DEFAULT);
Ok(Self { inner, root_start: 0, root_end }) Ok(Self { inner, root_start: 0, root_end })
} }
pub fn set_callback<F: Fn(&Path) -> Result<(), Error> + 'static>(&mut self, callback: F ) { pub fn set_callback<F: Fn(&Path) -> Result<(), Error> + Send + 'static>(&mut self, callback: F ) {
self.inner.set_callback(callback); self.inner.set_callback(callback);
} }

View File

@ -35,7 +35,7 @@ pub struct SequentialDecoder<R: Read> {
feature_flags: u64, feature_flags: u64,
allow_existing_dirs: bool, allow_existing_dirs: bool,
skip_buffer: Vec<u8>, skip_buffer: Vec<u8>,
callback: Option<Box<dyn Fn(&Path) -> Result<(), Error>>>, callback: Option<Box<dyn Fn(&Path) -> Result<(), Error> + Send>>,
} }
const HEADER_SIZE: u64 = std::mem::size_of::<PxarHeader>() as u64; const HEADER_SIZE: u64 = std::mem::size_of::<PxarHeader>() as u64;
@ -57,7 +57,7 @@ impl<R: Read> SequentialDecoder<R> {
} }
} }
pub fn set_callback<F: Fn(&Path) -> Result<(), Error> + 'static>(&mut self, callback: F ) { pub fn set_callback<F: Fn(&Path) -> Result<(), Error> + Send + 'static>(&mut self, callback: F ) {
self.callback = Some(Box::new(callback)); self.callback = Some(Box::new(callback));
} }