Skip to content

Commit 3670519

Browse files
committed
Switch key code/name mapping implementation from hashmap to bimap
1 parent c88882b commit 3670519

3 files changed

Lines changed: 12 additions & 5 deletions

File tree

Cargo.lock

Lines changed: 7 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Cargo.toml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ keywords = ["presence", "rfid"]
1212

1313
[dependencies]
1414
anyhow = "1.0"
15+
bimap = "0.6.3"
1516
clap = { version = "4.5.47", default-features = false, features = ["derive", "error-context", "help", "std", "usage"] }
1617
ctrlc = "3.4.7"
1718
evdev = "0.13.1"

src/keycodenames.rs

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -3,19 +3,18 @@
33
* License: MIT
44
*/
55

6-
use std::collections::HashMap;
7-
6+
use bimap::BiMap;
87
use evdev::KeyCode;
98

109
pub(crate) type KeyName = String;
1110

1211
pub(crate) struct KeyCodeNameMapping {
13-
names_to_codes: HashMap<KeyName, KeyCode>,
12+
names_to_codes: BiMap<KeyName, KeyCode>,
1413
}
1514

1615
impl KeyCodeNameMapping {
1716
pub(crate) fn new() -> Self {
18-
let mut names_to_codes: HashMap<KeyName, KeyCode> = HashMap::new();
17+
let mut names_to_codes: BiMap<KeyName, KeyCode> = BiMap::new();
1918

2019
let mut insert = |name: &str, code: KeyCode| {
2120
names_to_codes.insert(name.to_owned(), code);
@@ -86,6 +85,6 @@ impl KeyCodeNameMapping {
8685
}
8786

8887
pub(crate) fn find_code_for_name(&self, name: KeyName) -> Option<&KeyCode> {
89-
self.names_to_codes.get(&name)
88+
self.names_to_codes.get_by_left(&name)
9089
}
9190
}

0 commit comments

Comments
 (0)