# Pure rust lib for compressing / decompressing binary data

**URL:** <https://users.rust-lang.org/t/pure-rust-lib-for-compressing-decompressing-binary-data/58207>\
**Category:** uncategorized\
**Created:** [April 11, 2021, 7:02am UTC](https://users.rust-lang.org/t/pure-rust-lib-for-compressing-decompressing-binary-data/58207 "2021-04-11T07:02:55Z")\
**Posts on this page:** 6\
**Page:** 1

<div class="post-metadata">

**Author:** ![anon80458984](https://avatars.discourse-cdn.com/v4/letter/a/53a042/32.png) [@anon80458984](https://users.rust-lang.org/u/anon80458984)\
**Post date:** [April 11, 2021, 7:02am UTC](https://users.rust-lang.org/t/pure-rust-lib-for-compressing-decompressing-binary-data/58207/1 "2021-04-11T07:02:56Z")

</div>

1. I need this to be pure rust, as I need it to work on both x86\_64 and wasm.

2. Speed is always important, but it's not crucial here.

3. I'm going to be reading/writing blobs of binary data that have lots of compression (as in bzip2 / gzip would work well on them.)

4. I would like to use some library to compress/decompress on file read/write.

Recommendations ?

---

<div class="post-metadata">

**Author:** ![jer](https://sea1.discourse-cdn.com/flex019/user_avatar/users.rust-lang.org/jer/32/813_2.png) [@jer](https://users.rust-lang.org/u/jer)\
**Post date:** [April 11, 2021, 9:08am UTC](https://users.rust-lang.org/t/pure-rust-lib-for-compressing-decompressing-binary-data/58207/2 "2021-04-11T09:08:01Z")

</div>

[flate2](https://crates.io/crates/flate2) comes with the pure-Rust `miniz_oxide` backend.

---

<div class="post-metadata">

**Author:** ![kornel](https://sea1.discourse-cdn.com/flex019/user_avatar/users.rust-lang.org/kornel/32/4823_2.png) [@kornel](https://users.rust-lang.org/u/kornel)\
**Post date:** [April 11, 2021, 6:52pm UTC](https://users.rust-lang.org/t/pure-rust-lib-for-compressing-decompressing-binary-data/58207/3 "2021-04-11T18:52:46Z")

</div>

BTW, you should only use bzip2 or gzip if you need compatibility with legacy software.

LZMA and brotli/zstandard beat them on both speed and compression. They're pure win-win. If you use bzip2 or gzip you spend extra time to make files bigger.

---

<div class="post-metadata">

**Author:** ![anon80458984](https://avatars.discourse-cdn.com/v4/letter/a/53a042/32.png) [@anon80458984](https://users.rust-lang.org/u/anon80458984)\
**Post date:** [April 11, 2021, 9:50pm UTC](https://users.rust-lang.org/t/pure-rust-lib-for-compressing-decompressing-binary-data/58207/4 "2021-04-11T21:50:09Z")

</div>

@kornel : unless aliases are involved, it allears flate2 above supports neither lzma/brotli/zstandard.

Do you have pure-rust crates you recommend?

---

<div class="post-metadata">

**Author:** ![kornel](https://sea1.discourse-cdn.com/flex019/user_avatar/users.rust-lang.org/kornel/32/4823_2.png) [@kornel](https://users.rust-lang.org/u/kornel)\
**Post date:** [April 11, 2021, 9:51pm UTC](https://users.rust-lang.org/t/pure-rust-lib-for-compressing-decompressing-binary-data/58207/5 "2021-04-11T21:51:26Z")

</div>

> **[brotli](https://lib.rs/crates/brotli)**
>
> A brotli compressor and decompressor that with an interface avoiding the rust stdlib. This makes it suitable for embedded devices and kernels. It is designed with a pluggable allocator so that the standard lib's allocator may be employed. The default...

---

<div class="post-metadata">

**Author:** ![system](https://sea1.discourse-cdn.com/flex019/user_avatar/users.rust-lang.org/system/32/51372_2.png) [@system](https://users.rust-lang.org/u/system)\
**Post date:** [July 10, 2021, 9:51pm UTC](https://users.rust-lang.org/t/pure-rust-lib-for-compressing-decompressing-binary-data/58207/6 "2021-07-10T21:51:26Z")

</div>

This topic was automatically closed 90 days after the last reply. We invite you to open a new topic if you have further questions or comments.
