# Bytes A utility library for working with bytes. [![Crates.io][crates-badge]][crates-url] [![Build Status][ci-badge]][ci-url] [crates-badge]: https://img.shields.io/crates/v/bytes.svg [crates-url]: https://crates.io/crates/bytes [ci-badge]: https://github.com/tokio-rs/bytes/workflows/CI/badge.svg [ci-url]: https://github.com/tokio-rs/bytes/actions [Documentation](https://docs.rs/bytes) ## Usage To use `bytes`, first add this to your `Cargo.toml`: ```toml [dependencies] bytes = "1" ``` Next, add this to your crate: ```rust use bytes::{Bytes, BytesMut, Buf, BufMut}; ``` ## no_std support To use `bytes` with no_std environment, disable the (enabled by default) `std` feature. ```toml [dependencies] bytes = { version = "1", default-features = false } ``` To use `bytes` with no_std environment without atomic CAS, such as thumbv6m, you also need to enable the `extra-platforms` feature. See the [documentation for the `portable-atomic` crate](https://docs.rs/portable-atomic) for more information. The MSRV when `extra-platforms` feature is enabled depends on the MSRV of `portable-atomic`. ## Serde support Serde support is optional and disabled by default. To enable use the feature `serde`. ```toml [dependencies] bytes = { version = "1", features = ["serde"] } ``` The MSRV when `serde` feature is enabled depends on the MSRV of `serde`. ## Building documentation When building the `bytes` documentation the `docsrs` option should be used, otherwise feature gates will not be shown. This requires a nightly toolchain: ``` RUSTDOCFLAGS="--cfg docsrs" cargo +nightly doc ``` ## License This project is licensed under the [MIT license](LICENSE). ### Contribution Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in `bytes` by you, shall be licensed as MIT, without any additional terms or conditions.