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

Skip to content

Support bool type in id attribute in Enum #471

@wcampbell0x2a

Description

@wcampbell0x2a

This should work:

use deku::prelude::*;

#[derive(DekuRead, DekuWrite, Debug)]
pub struct A {
    bit: bool,
    #[deku(ctx = "*bit")]
    var: Var,
}

#[derive(DekuRead, DekuWrite, Debug)]
#[deku(id = "bit", ctx = "bit: bool")]
pub enum Var {
    #[deku(id = false)]
    False(u8),
    #[deku(id = true)]
    True(u32),
}

It doens't:

error: Unexpected type `bool`
  --> src/lib.rs:13:17
   |
13 |     #[deku(id = false)]
   |                 ^^^^^

error: Unexpected type `bool`
  --> src/lib.rs:15:17
   |
15 |     #[deku(id = true)]
   |                 ^^^^

Instead, you need to make the id a TokenStream:

use deku::prelude::*;

#[derive(DekuRead, DekuWrite, Debug)]
pub struct A {
    bit: bool,
    #[deku(ctx = "*bit")]
    var: Var,
}

#[derive(DekuRead, DekuWrite, Debug)]
#[deku(id = "bit", ctx = "bit: bool")]
pub enum Var {
    #[deku(id = "false")]
    False(u8),
    #[deku(id = "true")]
    True(u32),
}

Metadata

Metadata

Assignees

Labels

enhancementNew feature or request

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions