1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
use bincode::{Decode, Encode};

#[derive(Encode, Decode, Copy, Clone, Debug, Eq, PartialEq, Hash)]
pub struct Keymap(pub u64);

impl Keymap {
    pub const INVALID: Self = Self(0);

    pub fn is_invalid(self) -> bool {
        self == Self::INVALID
    }

    pub fn parse(self, keymap: &str) -> Self {
        let mut res = Self::INVALID;
        (|| res = get!().parse_keymap(keymap))();
        res
    }
}