Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add several macro attributes #26

Open
wants to merge 3 commits into
base: master
Choose a base branch
from
Open

Conversation

oknozor
Copy link

@oknozor oknozor commented Jul 19, 2021

I implemented what I asked for in #25
Let me know if you think that might be useful and if I need to change anything.

Make length prefix usable more that once
@oknozor
Copy link
Author

oknozor commented Jul 20, 2021

I also implemented the possibility to use a length prefix multiple time like this :

#[derive(Protocol, Debug, PartialEq, Eq)]
pub struct WithElementsLengthUsedTwice {
    pub count: u32,
    pub foo: bool,
    #[protocol(length_prefix(elements(count)))]
    pub data_1: Vec<u32>,
    #[protocol(length_prefix(elements(count)))]
    pub data_2: Vec<u32>,
}

@dylanmckay I am waiting for your feedback before updating the documentation.

@oknozor oknozor changed the title Add fixed length attribute Add several macro attributes Jul 21, 2021
@oknozor
Copy link
Author

oknozor commented Jul 21, 2021

I started to work on a "skip_if" attribute, for now the derive implementation is quite naive (and only Parcel::read is implemented).
The idea is to be able to skip serialization/deserialization for an Option<T> field based on another boolean field or a binary /unary expression.

It looks like this :

#[derive(Protocol, Debug, PartialEq, Eq)]
struct SkipIfField {
    pub condition: bool,
    #[protocol(skip_if("condition"))]
    pub message: Option<u8>,
}

#[derive(Protocol, Debug, PartialEq, Eq)]
struct SkipIfBinaryExp {
    pub condition: u8,
    #[protocol(skip_if("condition == 7"))]
    pub message: Option<u8>,
}

This only works on struct named field, I don't know if we want this for other kind of field.

@JOT85
Copy link

JOT85 commented Jun 18, 2022

This is a feature I'd also like! @dylanmckay is there a chance this will be merged? I don't mind helping to finish up the docs?

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.

2 participants