10 releases
0.5.0 | Aug 5, 2020 |
---|---|
0.4.2 | Sep 24, 2019 |
0.3.4 | Jun 25, 2019 |
0.3.2 | May 3, 2019 |
0.1.0 | Jul 22, 2018 |
#260 in #packet
22,779 downloads per month
Used in 4 crates
(2 directly)
5KB
55 lines
buffering
A library for handling buffer operations
Purpose
This library is primarily aimed at simple network serialization and deserialization for stack allocated struct types. It provides a macro to generate a union type that allows access to fields for inspection and the underlying buffer for network transfer.
lib.rs
:
Approach
This crate is meant to provide a macro which behaves as follows:
- The provided macro uses a more restrictive approach. It uses procedural macros and unions to provide some level of safety when writing to fields in a struct while allowing the underlying struct to be interpreted as a slice. This is a C-like workflow but does provide some helpful guarantees that come with Rust like protection against buffer overflows and bounds checking. One very important note is that structs that use the provided procedural macro must be completely stack allocated. Compilation will fail if certain constructs that prevent size computation at compile time are used. As a result this really should only be used as a Rust substitute with some additional safety for the common C workflow when doing things like parsing network packets.
Dependencies
~1.5MB
~35K SLoC