Expand description


arc-bytes forbids unsafe code arc-bytes is considered alpha crate version Live Build Status HTML Coverage Report for main branch Documentation for main branch

A reference-counted byte buffer.

ArcBytes is a type that is useful when parsing a buffer of bytes and breaking it into smaller pieces without extra allocations or extending the lifetime of the underlying buffer. This is done with no unsafe code by leveraging std::sync::Arc. When the final reference of the buffer goes away, the underlying bytes will be released.

This type also implements std::io::Read and std::iter::Iterator for easier integration with existing code.

With the feature flag serde enabled, serde::Serialize/serde::Deserialize are implemented in such a way that ensures the bytes are written optimally and not as a sequence of u8s. This is almost identical to the approach that serde_bytes utilizes, except ArcBytes uses a single type and introduces the use of Arc.

Open-source Licenses

This project, like all projects from Khonsu Labs, are open-source. This repository is available under the MIT License or the Apache License 2.0.

To learn more about contributing, please see CONTRIBUTING.md.


Efficient serialization implementation, ensuring bytes are written as a buffer of bytes not as a sequence.


An immutable buffer of bytes that can be cloned, sliced, and read into multiple parts using a single refernce to the underlying buffer.

An iterator for an ArcBytes.

An instance of ArcBytes that is not borrowing its underlying data.


Formats the bytes contained in slice into the provided writer. This function groups the printed output in chukns of 8 hexadecimal characters, and inserts spaces between each group.