#buffer #byte-buffer #byte #type #no-alloc

no-std tbytes

一个用于将类型数据写入缓冲区的微型库

3个版本

0.1.0 2024年3月25日
0.1.0-alpha22023年12月7日

770数据结构

Download history 11/week @ 2024-03-11 151/week @ 2024-03-18 240/week @ 2024-03-25 67/week @ 2024-04-01 49/week @ 2024-04-08 23/week @ 2024-04-15 22/week @ 2024-04-22 13/week @ 2024-04-29 3/week @ 2024-05-06 18/week @ 2024-05-13 23/week @ 2024-05-20 32/week @ 2024-05-27 25/week @ 2024-06-03 21/week @ 2024-06-10 20/week @ 2024-06-17 17/week @ 2024-06-24

每月下载量 86
4 个crate中(2个直接) 使用

MIT/Apache

45KB
315

T-Bytes

logo

T-Bytes是一个用于将类型数据写入字节数组的微型库。它主要用于no-stdno-alloc目标或crate,这些目标或crate考虑支持no-std

文档可以在这里找到。

安装

cargo add tbytes

使用

从示例开始会更容易。这里我们创建一个缓冲区并用异构值填充它。

use tbytes::errors::TBytesError;
use tbytes::{BytesWriterFor, TBytesReader, TBytesReaderFor, TBytesWriter};

fn main() -> Result<(), TBytesError> {
    type Content = (i16, f32, [u8; 2], [i16; 2]);
    let mut buffer = [0u8; 12];
    
    let mut writer = TBytesWriter::from(buffer.as_mut_slice());
    
    let into_values: Content = (-1048, 0.32, [10, 31], [-1, 240]);
    writer.write(into_values.0)?;
    writer.write(into_values.1)?;
    writer.write_slice(into_values.2.as_slice())?;
    writer.write_array(into_values.3)?;
    
    assert!(matches!(writer.write(0u8), Err(TBytesError::OutOfBounds)));
    
    let reader = TBytesReader::from(buffer.as_slice());
    
    let mut from_values: Content = Content::default();
    from_values.0 = reader.read()?;
    from_values.1 = reader.read()?;
    from_values.2 = reader.read_array()?;
    from_values.3 = reader.read_array()?;
    
    assert!(matches!(
          reader.read() as Result<u8, TBytesError>,
          Err(TBytesError::OutOfBounds)
      ));
    
    assert_eq!(into_values, from_values);
    
    Ok(())
}

有关高级使用方法,请参阅示例

示例

  • basic — 基本读写。
    cargo run --example basic
    

限制

我们希望尽可能简单,但简单是有代价的。

许可证

这里我们简单地遵守根据Rust API指南(C-PERMISSIVE)建议的双重许可。

许可方式为以下之一

由您选择。

贡献

除非您明确声明,否则根据Apache-2.0许可证定义,您有意提交以包含在工作中的任何贡献,将按照上述方式双授权,没有任何额外条款或条件。

依赖项

~175KB