diff options
Diffstat (limited to 'third_party/rust/scroll_derive/README.md')
-rw-r--r-- | third_party/rust/scroll_derive/README.md | 35 |
1 files changed, 35 insertions, 0 deletions
diff --git a/third_party/rust/scroll_derive/README.md b/third_party/rust/scroll_derive/README.md new file mode 100644 index 0000000000..a7f7e85f0e --- /dev/null +++ b/third_party/rust/scroll_derive/README.md @@ -0,0 +1,35 @@ +# scroll_derive +Macros 1.1 implementing #[derive(Pread, Pwrite)] for https://github.com/m4b/scroll + +Add derive annotations to your POD seamlessly and easily: + +```rust +extern crate scroll; +#[macro_use] +extern crate scroll_derive; + +#[derive(Debug, PartialEq, Pread, Pwrite, IOread, IOwrite, SizeWith)] +#[repr(C)] +struct Data { + id: u32, + timestamp: f64, + arr: [u16; 2], +} + +use scroll::{Pread, Pwrite, Cread, LE}; + +fn main (){ + let bytes = [0xefu8, 0xbe, 0xad, 0xde, 0, 0, 0, 0, 0, 0, 224, 63, 0xad, 0xde, 0xef, 0xbe]; + let data: Data = bytes.pread_with(0, LE).unwrap(); + println!("data: {:?}", &data); + assert_eq!(data.id, 0xdeadbeefu32); + let mut bytes2 = vec![0; ::std::mem::size_of::<Data>()]; + bytes2.pwrite_with(data, 0, LE).unwrap(); + let data: Data = bytes.pread_with(0, LE).unwrap(); + let data2: Data = bytes2.pread_with(0, LE).unwrap(); + assert_eq!(data, data2); + + let data: Data = bytes.cread_with(0, LE); + assert_eq!(data, data2); +} +``` |