fix: resolve compilation errors by adding Sync+Send bounds and fixing syntax
Co-authored-by: aider (openai/andrew/openrouter/sonoma-sky-alpha) <aider@aider.chat>
This commit is contained in:
@@ -61,7 +61,7 @@ pub enum CompressionType {
|
||||
/// let engine = /* some engine */;
|
||||
/// let reader = engine.open("file.gz".into()).unwrap();
|
||||
/// ```
|
||||
pub trait CompressionEngine {
|
||||
pub trait CompressionEngine: Send + Sync {
|
||||
/// Opens a compressed file for reading.
|
||||
///
|
||||
/// Creates a reader that transparently decompresses the file contents as they are read.
|
||||
@@ -156,22 +156,32 @@ pub trait CompressionEngine {
|
||||
writer.flush()?;
|
||||
Ok(())
|
||||
}
|
||||
|
||||
/// Clones this compression engine into a new boxed instance.
|
||||
///
|
||||
/// Required for dynamic trait object cloning.
|
||||
///
|
||||
/// # Returns
|
||||
///
|
||||
/// A new `Box<dyn CompressionEngine>` clone of this engine.
|
||||
fn clone_box(&self) -> Box<dyn CompressionEngine>;
|
||||
}
|
||||
|
||||
impl Clone for Box<dyn CompressionEngine> {
|
||||
fn clone(&self) -> Self {
|
||||
self.as_ref().clone_box()
|
||||
}
|
||||
}
|
||||
|
||||
lazy_static! {
|
||||
static ref COMPRESSION_ENGINES: EnumMap<CompressionType, Box<dyn CompressionEngine>> = {
|
||||
enum_map! {
|
||||
let mut em = enum_map! {
|
||||
CompressionType::LZ4 => Box::new(crate::compression_engine::lz4::CompressionEngineLZ4::new()),
|
||||
CompressionType::GZip => {
|
||||
#[cfg(feature = "gzip")]
|
||||
Box::new(crate::compression_engine::gzip::CompressionEngineGZip::new()),
|
||||
#[cfg(not(feature = "gzip"))]
|
||||
Box::new(crate::compression_engine::program::CompressionEngineProgram::new(
|
||||
"gzip",
|
||||
vec!["-c"],
|
||||
vec!["-d", "-c"]
|
||||
))
|
||||
},
|
||||
CompressionType::GZip => Box::new(crate::compression_engine::program::CompressionEngineProgram::new(
|
||||
"gzip",
|
||||
vec!["-c"],
|
||||
vec!["-d", "-c"]
|
||||
)),
|
||||
CompressionType::BZip2 => Box::new(crate::compression_engine::program::CompressionEngineProgram::new(
|
||||
"bzip2",
|
||||
vec!["-c"],
|
||||
@@ -188,7 +198,14 @@ lazy_static! {
|
||||
vec!["-d", "-c"]
|
||||
)),
|
||||
CompressionType::None => Box::new(crate::compression_engine::none::CompressionEngineNone::new())
|
||||
};
|
||||
|
||||
#[cfg(feature = "gzip")]
|
||||
{
|
||||
em[CompressionType::GZip] = Box::new(crate::compression_engine::gzip::CompressionEngineGZip::new());
|
||||
}
|
||||
|
||||
em
|
||||
};
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user