Thanks to visit codestin.com
Credit goes to github.com

Skip to content

feat: Add temp attribute#136

Merged
sharksforarms merged 1 commit into
masterfrom
temp-fields
Nov 26, 2020
Merged

feat: Add temp attribute#136
sharksforarms merged 1 commit into
masterfrom
temp-fields

Conversation

@sharksforarms
Copy link
Copy Markdown
Owner

@sharksforarms sharksforarms commented Nov 23, 2020

Related: #120

Example

use deku::prelude::*;
use std::convert::{TryFrom, TryInto};

// Note: new `deku_derive` vs `derive`, this is needed only for structs/enums which use `temp`
#[deku_derive(DekuRead, DekuWrite)]
#[derive(PartialEq, Debug)]
struct TestStruct {
    #[deku(temp)]
    field_a: u8,
    #[deku(count = "field_a")]
    field_b: Vec<u8>,
}

fn main() {
    let test_data: Vec<u8> = [0x01, 0x02].to_vec();

    let ret_read = TestStruct::try_from(test_data.as_ref()).unwrap();
    assert_eq!(
        TestStruct {
            field_b: vec![0x02]
        },
        ret_read
    );

    let ret_write: Vec<u8> = ret_read.try_into().unwrap();
    assert_eq!(test_data[1..].to_vec(), ret_write);
}

Enabled via `deku_derive` proc-macro attribue
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant