Crate bonsaidb::core::arc_bytes

Expand description

arc-bytes

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.

Modules

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

Structs

  • 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.

Functions

  • 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.