11 个稳定版本

使用旧的 Rust 2015

1.10.0 2024年7月22日
1.9.4 2022年8月26日
1.9.3 2022年3月6日
1.9.2 2020年6月7日
1.0.1+1.7.3 2016年11月26日

#91压缩

Download history 233231/week @ 2024-04-26 229579/week @ 2024-05-03 250189/week @ 2024-05-10 238151/week @ 2024-05-17 250972/week @ 2024-05-24 269125/week @ 2024-05-31 268780/week @ 2024-06-07 257365/week @ 2024-06-14 264220/week @ 2024-06-21 258474/week @ 2024-06-28 267772/week @ 2024-07-05 265867/week @ 2024-07-12 287190/week @ 2024-07-19 297787/week @ 2024-07-26 301075/week @ 2024-08-02 314197/week @ 2024-08-09

1,254,039 每月下载量
893 个包(直接使用) 中使用

MIT 许可证

1MB
21K SLoC

C 15K SLoC // 0.2% comments Visual Studio Project 4.5K SLoC Python 793 SLoC // 0.1% comments Visual Studio Solution 329 SLoC Rust 261 SLoC // 0.4% comments C++ 173 SLoC // 0.2% comments Shell 157 SLoC // 0.1% comments Bitbake 69 SLoC // 0.3% comments

lz4

Build Status Crates.io Join the chat at https://gitter.im/bozaro/lz4-rs Rustdoc

注意:10xGenomics 是 lz4-rs 的新官方所在地,取代了 https://github.com/bozaro/lz4-rs

此存储库包含 lz4 压缩库的绑定(https://github.com/Cyan4973/lz4)。

LZ4 是一个非常快的无损压缩算法,每个核心提供 400 MB/s 的压缩速度,对多线程应用程序具有近线性的可伸缩性。它还具备极快的解码器,每个核心的速度达到多个 GB/s,通常在多核系统上达到 RAM 速度限制。

用法

将此内容放入您的 Cargo.toml

[dependencies]
lz4 = "1.23.1"

压缩/解压缩示例代码

extern crate lz4;

use std::env;
use std::fs::File;
use std::io::{self, Result};
use std::path::{Path, PathBuf};

use lz4::{Decoder, EncoderBuilder};

fn main() {
    println!("LZ4 version: {}", lz4::version());

    for path in env::args().skip(1).map(PathBuf::from) {
        if let Some("lz4") = path.extension().and_then(|e| e.to_str()) {
            decompress(&path, &path.with_extension("")).unwrap();
        } else {
            compress(&path, &path.with_extension("lz4")).unwrap();
        }
    }
}

fn compress(source: &Path, destination: &Path) -> Result<()> {
    println!("Compressing: {} -> {}", source.display(), destination.display());

    let mut input_file = File::open(source)?;
    let output_file = File::create(destination)?;
    let mut encoder = EncoderBuilder::new()
        .level(4)
        .build(output_file)?;
    io::copy(&mut input_file, &mut encoder)?;
    let (_output, result) = encoder.finish();
    result
}

fn decompress(source: &Path, destination: &Path) -> Result<()> {
    println!("Decompressing: {} -> {}", source.display(), destination.display());

    let input_file = File::open(source)?;
    let mut decoder = Decoder::new(input_file)?;
    let mut output_file = File::create(destination)?;
    io::copy(&mut decoder, &mut output_file)?;

    Ok(())
}

依赖项