libdd-tinybytes
A lightweight alternative to bytes::Bytes providing immutable, reference-counted byte buffers with zero-copy cloning and slicing.
Overview
libdd-tinybytes provides an immutable byte buffer type similar to bytes::Bytes with a focus on simplicity and AsRef<[u8]> support. It uses reference counting to enable efficient zero-copy operations.
Types
Bytes
An immutable byte buffer that supports:
- Zero-copy cloning: Creating new
Bytesinstances shares the underlying buffer through reference counting - Zero-copy slicing: Extracting subslices without copying the underlying data
- Static buffers: Efficient handling of
&'static [u8]without reference counting overhead - Thread safety: Implements
Send + Syncfor safe use across threads - AsRef implementation: Directly usable as
&[u8]
BytesString
A UTF-8 validated string type built on top of Bytes (enabled with the bytes_string feature):
- UTF-8 validation: Ensures data is valid UTF-8 at construction time
- String interface: Provides
AsRef<str>andBorrow<str>implementations - Zero-copy operations: Inherits efficient cloning and slicing from
Bytes
Implementation Details
The crate uses a custom reference counting implementation optimized for its specific use case, tracking only strong references. Individual deallocations do not free memory; instead, memory is reclaimed when the last reference is dropped.
Feature Flags
bytes_string: Enable theBytesStringUTF-8 validated string typeserialization: Enable serde support for serialization
License
Copyright 2024-Present Datadog, Inc. https://www.datadoghq.com/
SPDX-License-Identifier: Apache-2.0