refactor: use IntEnum instead of a custom implementation for ConfigKey in config.rs

This commit is contained in:
2026-08-17 21:14:00 -05:00
parent 69669f2011
commit d70b35dd92
3 changed files with 28 additions and 19 deletions
Generated
+25
View File
@@ -210,6 +210,7 @@ dependencies = [
"esp-radio", "esp-radio",
"esp-rtos", "esp-rtos",
"esp-storage", "esp-storage",
"int-enum",
"picoserve", "picoserve",
"portable-atomic", "portable-atomic",
"postcard", "postcard",
@@ -1431,6 +1432,18 @@ dependencies = [
"syn 2.0.117", "syn 2.0.117",
] ]
[[package]]
name = "int-enum"
version = "1.2.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "e366a1634cccc76b4cfd3e7580de9b605e4d93f1edac48d786c1f867c0def495"
dependencies = [
"proc-macro2",
"proc-macro2-diagnostics",
"quote",
"syn 2.0.117",
]
[[package]] [[package]]
name = "itoa" name = "itoa"
version = "1.0.18" version = "1.0.18"
@@ -1720,6 +1733,18 @@ dependencies = [
"unicode-ident", "unicode-ident",
] ]
[[package]]
name = "proc-macro2-diagnostics"
version = "0.10.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "af066a9c399a26e020ada66a034357a868728e72cd426f3adcd35f80d88d88c8"
dependencies = [
"proc-macro2",
"quote",
"syn 2.0.117",
"version_check",
]
[[package]] [[package]]
name = "quote" name = "quote"
version = "1.0.45" version = "1.0.45"
+1
View File
@@ -66,6 +66,7 @@ sequential-storage = "8.0"
esp-storage = { version = "0.9", features = ["defmt", "esp32c6"] } esp-storage = { version = "0.9", features = ["defmt", "esp32c6"] }
postcard = { version = "1.1", default-features = false } postcard = { version = "1.1", default-features = false }
serde = { version = "1.0", default-features = false, features = ["derive"] } serde = { version = "1.0", default-features = false, features = ["derive"] }
int-enum = "1.2.0"
# For fine tuning these settings, please refer to https://doc.rust-lang.org/cargo/reference/profiles.html # For fine tuning these settings, please refer to https://doc.rust-lang.org/cargo/reference/profiles.html
+2 -19
View File
@@ -4,6 +4,7 @@ use embassy_sync::blocking_mutex::raw::CriticalSectionRawMutex;
use embedded_rpc::RpcService; use embedded_rpc::RpcService;
use esp_hal::peripherals::FLASH; use esp_hal::peripherals::FLASH;
use esp_storage::FlashStorage; use esp_storage::FlashStorage;
use int_enum::IntEnum;
use sequential_storage::{ use sequential_storage::{
cache::Cache, cache::Cache,
map::{Key, MapConfig, MapStorage, SerializationError}, map::{Key, MapConfig, MapStorage, SerializationError},
@@ -52,30 +53,12 @@ async fn config_handler(flash: FLASH<'static>) {
} }
} }
#[derive(Debug, Clone, Copy, PartialEq, Eq)] #[derive(Debug, Clone, Copy, PartialEq, Eq, IntEnum)]
#[repr(u8)] #[repr(u8)]
enum ConfigKey { enum ConfigKey {
Wifi, Wifi,
} }
impl TryFrom<u8> for ConfigKey {
type Error = ();
fn try_from(value: u8) -> Result<Self, Self::Error> {
const WIFI: u8 = ConfigKey::Wifi as u8;
match value {
WIFI => Ok(ConfigKey::Wifi),
_ => Err(()),
}
}
}
impl From<ConfigKey> for u8 {
fn from(c: ConfigKey) -> u8 {
c as u8
}
}
impl Key for ConfigKey { impl Key for ConfigKey {
fn get_len(_: &[u8]) -> Result<usize, SerializationError> { fn get_len(_: &[u8]) -> Result<usize, SerializationError> {
Ok(1) Ok(1)