byte

Crates.iobyte
lib.rsbyte
version0.2.7
sourcesrc
created_at2017-06-27 16:32:36.173534
updated_at2024-02-07 05:07:48.918739
descriptionA low-level, zero-copy and panic-free serializer and deserializer for binary.
homepagehttps://github.com/andylokandy/byte
repositoryhttps://github.com/andylokandy/byte
max_upload_size
id20967
size42,093
Andy Lok (andylokandy)

documentation

https://docs.rs/byte

README

Byte

build status crates.io docs.rs

A low-level, zero-copy and panic-free binary serializer and deserializer.

Documentation

Usage

Add the following to your Cargo.toml:

[dependencies]
byte = "0.2"

Byte is a no_std library; it can be used in any #![no_std] situation or crate.

Overview

Byte is designed to encode or decode binary data in a fast and low-level way. A classical use case is I2C communication en/decoding.

Byte provides two core traits TryRead and TryWrite. Types that implement these traits can be serialized into or deserialized from byte slices.

The library is meant to be simple, and it will always be.

Example

use byte::*;

let bytes: &[u8] = &[0xde, 0xad, 0xbe, 0xef];

let offset = &mut 0;
let num = bytes.read_with::<u32>(offset, BE).unwrap();
assert_eq!(num, 0xdeadbeef);
assert_eq!(*offset, 4);
use byte::*;
use byte::ctx::{Str, NULL};

let bytes: &[u8] = b"hello, world!\0dump";

let offset = &mut 0;
let str = bytes.read_with::<&str>(offset, Str::Delimiter(NULL)).unwrap();
assert_eq!(str, "hello, world!");
assert_eq!(*offset, 14);

Contribution

All kinds of contribution are welcomed.

  • Issues. Feel free to open an issue when you find typos, bugs, or have any question.

  • Pull requests. New collection, better implementation, more tests, more documents and typo fixes are all welcomed.

License

Licensed under MIT license (LICENSE-MIT or http://opensource.org/licenses/MIT)

Commit count: 47

cargo fmt