Skip to main content

esp_nvs/
set.rs

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