no_flash: init
This commit is contained in:
parent
57758cdc9a
commit
a0f34e945d
|
@ -13,7 +13,6 @@ For details see `trait StoreBackend`.
|
||||||
|
|
||||||
## TODO
|
## TODO
|
||||||
|
|
||||||
* NoFlash backend
|
|
||||||
* read_int()
|
* read_int()
|
||||||
* write_str()
|
* write_str()
|
||||||
* automatic value coercion
|
* automatic value coercion
|
||||||
|
|
|
@ -9,6 +9,7 @@ mod iter;
|
||||||
use iter::Iter;
|
use iter::Iter;
|
||||||
mod fmt;
|
mod fmt;
|
||||||
use fmt::FmtWrapper;
|
use fmt::FmtWrapper;
|
||||||
|
pub mod no_flash;
|
||||||
mod test;
|
mod test;
|
||||||
|
|
||||||
pub trait StoreBackend {
|
pub trait StoreBackend {
|
||||||
|
|
|
@ -0,0 +1,33 @@
|
||||||
|
use crate::StoreBackend;
|
||||||
|
use core::fmt;
|
||||||
|
|
||||||
|
/// expect this for any write operation to `NoFlash`
|
||||||
|
#[derive(Debug, Clone, Copy, PartialEq, Eq)]
|
||||||
|
pub struct NoFlashError;
|
||||||
|
|
||||||
|
impl fmt::Display for NoFlashError {
|
||||||
|
fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
|
||||||
|
write!(f, "no flash")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/// a valid `StoreBackend` that can be used for configurations lacking a flash
|
||||||
|
#[derive(Debug, Clone, Copy)]
|
||||||
|
pub struct NoFlash;
|
||||||
|
|
||||||
|
impl StoreBackend for NoFlash {
|
||||||
|
type Data = [u8; 0];
|
||||||
|
|
||||||
|
fn data(&self) -> &Self::Data {
|
||||||
|
&[]
|
||||||
|
}
|
||||||
|
|
||||||
|
type Error = NoFlashError;
|
||||||
|
fn erase(&mut self) -> Result<(), Self::Error> {
|
||||||
|
Err(NoFlashError)
|
||||||
|
}
|
||||||
|
|
||||||
|
fn program(&mut self, _: usize, _: &[u8]) -> Result<(), Self::Error> {
|
||||||
|
Err(NoFlashError)
|
||||||
|
}
|
||||||
|
}
|
12
src/test.rs
12
src/test.rs
|
@ -1,6 +1,6 @@
|
||||||
#![cfg(test)]
|
#![cfg(test)]
|
||||||
|
|
||||||
use crate::{Store, StoreBackend};
|
use crate::{Error, no_flash, Store, StoreBackend, WriteError};
|
||||||
|
|
||||||
const SIZE: usize = 1024;
|
const SIZE: usize = 1024;
|
||||||
|
|
||||||
|
@ -77,3 +77,13 @@ fn write_many() {
|
||||||
assert_eq!(store.read("foo").unwrap().unwrap(), b"do not compact away");
|
assert_eq!(store.read("foo").unwrap().unwrap(), b"do not compact away");
|
||||||
assert_eq!(store.read("bar").unwrap().unwrap(), b"SPAM");
|
assert_eq!(store.read("bar").unwrap().unwrap(), b"SPAM");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn no_flash() {
|
||||||
|
let mut store = Store::new(no_flash::NoFlash);
|
||||||
|
assert_eq!(store.read("foo").unwrap(), None);
|
||||||
|
assert_eq!(
|
||||||
|
store.write("foo", b"bar"),
|
||||||
|
Err(Error::Write(WriteError::Backend(no_flash::NoFlashError)))
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
Loading…
Reference in New Issue