Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/kixunil/struct_deser
Simple (de)serialization of structs
https://github.com/kixunil/struct_deser
Last synced: 3 months ago
JSON representation
Simple (de)serialization of structs
- Host: GitHub
- URL: https://github.com/kixunil/struct_deser
- Owner: Kixunil
- Created: 2017-09-09T22:22:24.000Z (over 7 years ago)
- Default Branch: master
- Last Pushed: 2020-04-06T09:43:42.000Z (almost 5 years ago)
- Last Synced: 2024-09-14T16:24:16.858Z (4 months ago)
- Language: Rust
- Size: 14.6 KB
- Stars: 5
- Watchers: 4
- Forks: 0
- Open Issues: 4
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
Struct (de)serialization
========================This crate provides very simple way of (de)serializing structs. The main purpose is to aid working with packets.
Maintenance status
------------------As you can see from the history of the repository, there wasn't much activity in a while. The main reason for it is that the crate satisfies my needs well and nobody approached me with feature requests, bug repports or pull requests, so I had no way of knowing if people are missing something.
However, in the meantime @xoac created [his own fork of this crate](https://crates.io/crates/endian_codec), which may be more interesting to you. Please go check it first. It's likely that he has more time to maintain his fork than me, so approach him with feature requests first. If he happens to become unresponsive, you may try your luck pinging me. I should have enough time to merge good PRs at least once per week.
Features
--------* derive(StructDeser)
* handling of endianess
* associated consts
* `no_std`Usage
-----```rust
extern crate struct_deser;
#[macro_use]
extern crate struct_deser_derive;// derive traits
#[derive(StructDeser, Debug, Eq, PartialEq)]
struct Packet {
// mark as big endian
// this is mandatory because u16 has multiple bytes
#[be]
version: u16,
// u8 goes without endianess attribute
ttl: u8,
// mark as little endian
#[le]
chksum: u32,
}fn main() {
use struct_deser::{SerializedByteLen,FromBytes,IntoBytes};let packet0 = Packet {
version: 1,
ttl: 42,
chksum: 47,
};let mut bytes = [0; Packet::BYTE_LEN];
packet0.into_bytes(&mut bytes);
let packet1 = Packet::from_bytes(&bytes);assert_eq!(packet0, packet1);
}
```License
-------
MITNFA