40 lines
888 B
Rust
40 lines
888 B
Rust
//! Support for configurations without flash
|
|
|
|
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)
|
|
}
|
|
|
|
fn backup_space(&self) -> &'static mut [u8] {
|
|
&mut []
|
|
}
|
|
}
|