34 个稳定版本

1.26.0 2024年7月22日
1.24.0 2022年8月26日
1.23.3 2022年3月6日
1.23.2 2020年6月8日
1.2.127 2015年3月20日

#11 in 压缩

Download history 173891/week @ 2024-05-02 170080/week @ 2024-05-09 170640/week @ 2024-05-16 189602/week @ 2024-05-23 203662/week @ 2024-05-30 211502/week @ 2024-06-06 209414/week @ 2024-06-13 200994/week @ 2024-06-20 231711/week @ 2024-06-27 203865/week @ 2024-07-04 214364/week @ 2024-07-11 230685/week @ 2024-07-18 234163/week @ 2024-07-25 223582/week @ 2024-08-01 257191/week @ 2024-08-08 256872/week @ 2024-08-15

1,018,305 每月下载量
用于 812 个crate (113 直接)

MIT 许可证

1MB
22K SLoC

C 15K SLoC // 0.2% comments Visual Studio Project 4.5K SLoC Rust 1K SLoC // 0.1% comments Python 787 SLoC // 0.1% comments Visual Studio Solution 326 SLoC C++ 171 SLoC // 0.2% comments Shell 155 SLoC // 0.1% comments Bitbake 68 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(())
}

依赖关系