Skip to main content

Compressor

Trait Compressor 

Source
pub trait Compressor: Send + Sync {
    // Required methods
    fn compress(&self, data: &[u8]) -> Result<Vec<u8>>;
    fn decompress(&self, data: &[u8]) -> Result<Vec<u8>>;
    fn algorithm(&self) -> CompressionAlgorithm;

    // Provided methods
    fn name(&self) -> &'static str { ... }
    fn can_detect(&self, _data: &[u8]) -> bool { ... }
}
Expand description

压缩器标准接口

实现此 trait 以支持自定义压缩算法

§示例

use flare_core::common::compression::{Compressor, CompressionAlgorithm};
use flare_core::common::error::Result;

struct MyCustomCompressor;

impl Compressor for MyCustomCompressor {
    fn compress(&self, data: &[u8]) -> Result<Vec<u8>> {
        // 实现压缩逻辑
        Ok(data.to_vec())
    }
     
    fn decompress(&self, data: &[u8]) -> Result<Vec<u8>> {
        // 实现解压逻辑
        Ok(data.to_vec())
    }
     
    fn algorithm(&self) -> CompressionAlgorithm {
        CompressionAlgorithm::None
    }
     
    fn name(&self) -> &'static str {
        "my_custom"
    }
     
    fn can_detect(&self, data: &[u8]) -> bool {
        // 实现魔数检测逻辑
        false
    }
}

Required Methods§

Source

fn compress(&self, data: &[u8]) -> Result<Vec<u8>>

压缩数据

§参数
  • data: 要压缩的原始数据
§返回

压缩后的数据

Source

fn decompress(&self, data: &[u8]) -> Result<Vec<u8>>

解压数据

§参数
  • data: 要解压的压缩数据
§返回

解压后的原始数据

Source

fn algorithm(&self) -> CompressionAlgorithm

获取压缩算法类型

Provided Methods§

Source

fn name(&self) -> &'static str

获取压缩器名称(用于注册和查找)

名称应该是唯一的,用于在注册表中标识压缩器

Source

fn can_detect(&self, _data: &[u8]) -> bool

检测数据是否使用此压缩算法(通过魔数等)

§参数
  • data: 待检测的数据(通常是数据的前几个字节)
§返回

如果数据可能是由此压缩器压缩的,返回 true

Dyn Compatibility§

This trait is dyn compatible.

In older versions of Rust, dyn compatibility was called "object safety".

Implementors§