Allow read_slice to return a Vec

This commit is contained in:
Julien Cretin
2022-06-03 11:16:43 +02:00
parent 85fe9cd29d
commit f57126634b
5 changed files with 29 additions and 24 deletions

View File

@@ -14,6 +14,7 @@
use crate::api::upgrade_storage::helper::{find_slice, is_aligned, ModRange};
use crate::api::upgrade_storage::UpgradeStorage;
use alloc::borrow::Cow;
use alloc::vec::Vec;
use core::cell::Cell;
use libtock_core::{callback, syscalls};
@@ -196,9 +197,9 @@ impl Storage for TockStorage {
self.max_page_erases
}
fn read_slice(&self, index: StorageIndex, length: usize) -> StorageResult<&[u8]> {
fn read_slice(&self, index: StorageIndex, length: usize) -> StorageResult<Cow<[u8]>> {
let start = index.range(length, self)?.start;
find_slice(&self.storage_locations, start, length)
find_slice(&self.storage_locations, start, length).map(Cow::Borrowed)
}
fn write_slice(&mut self, index: StorageIndex, value: &[u8]) -> StorageResult<()> {