Skip to main content

esp_nvs/
set.rs

1use crate::error::Error;
2use crate::platform::Platform;
3use crate::{
4    Key,
5    Nvs,
6    raw,
7};
8
9pub trait Set<T> {
10    fn set(&mut self, namespace: &Key, key: &Key, value: T) -> Result<(), Error>;
11}
12
13impl<T, S: Set<T>> Set<T> for &mut S {
14    fn set(&mut self, namespace: &Key, key: &Key, value: T) -> Result<(), Error> {
15        (*self).set(namespace, key, value)
16    }
17}
18
19impl<T: Platform> Set<bool> for Nvs<T> {
20    fn set(&mut self, namespace: &Key, key: &Key, value: bool) -> Result<(), Error> {
21        self.set_primitive(namespace, *key, raw::ItemType::U8, value as u64)
22    }
23}
24
25impl<T: Platform> Set<u8> for Nvs<T> {
26    fn set(&mut self, namespace: &Key, key: &Key, value: u8) -> Result<(), Error> {
27        self.set_primitive(namespace, *key, raw::ItemType::U8, value as u64)
28    }
29}
30
31impl<T: Platform> Set<u16> for Nvs<T> {
32    fn set(&mut self, namespace: &Key, key: &Key, value: u16) -> Result<(), Error> {
33        self.set_primitive(namespace, *key, raw::ItemType::U16, value as u64)
34    }
35}
36
37impl<T: Platform> Set<u32> for Nvs<T> {
38    fn set(&mut self, namespace: &Key, key: &Key, value: u32) -> Result<(), Error> {
39        self.set_primitive(namespace, *key, raw::ItemType::U32, value as u64)
40    }
41}
42
43impl<T: Platform> Set<u64> for Nvs<T> {
44    fn set(&mut self, namespace: &Key, key: &Key, value: u64) -> Result<(), Error> {
45        self.set_primitive(namespace, *key, raw::ItemType::U64, value)
46    }
47}
48
49impl<T: Platform> Set<i8> for Nvs<T> {
50    fn set(&mut self, namespace: &Key, key: &Key, value: i8) -> Result<(), Error> {
51        self.set_primitive(namespace, *key, raw::ItemType::I8, value.cast_unsigned() as _)
52    }
53}
54
55impl<T: Platform> Set<i16> for Nvs<T> {
56    fn set(&mut self, namespace: &Key, key: &Key, value: i16) -> Result<(), Error> {
57        self.set_primitive(namespace, *key, raw::ItemType::I16, value.cast_unsigned() as _)
58    }
59}
60
61impl<T: Platform> Set<i32> for Nvs<T> {
62    fn set(&mut self, namespace: &Key, key: &Key, value: i32) -> Result<(), Error> {
63        self.set_primitive(namespace, *key, raw::ItemType::I32, value.cast_unsigned() as _)
64    }
65}
66
67impl<T: Platform> Set<i64> for Nvs<T> {
68    fn set(&mut self, namespace: &Key, key: &Key, value: i64) -> Result<(), Error> {
69        self.set_primitive(namespace, *key, raw::ItemType::I64, value.cast_unsigned() as _)
70    }
71}
72
73impl<T: Platform> Set<&str> for Nvs<T> {
74    fn set(&mut self, namespace: &Key, key: &Key, value: &str) -> Result<(), Error> {
75        self.set_str(namespace, *key, value)
76    }
77}
78
79impl<T: Platform> Set<&[u8]> for Nvs<T> {
80    fn set(&mut self, namespace: &Key, key: &Key, value: &[u8]) -> Result<(), Error> {
81        self.set_blob(namespace, *key, value)
82    }
83}