#data #no-alloc #basic #sector-index #mediums #sectored #arbitrarily-aligned

不依赖std sectorize

一个小型库,用于将任意对齐的数据写入分区介质

1个不稳定版本

0.1.0 2024年6月30日

#855编码

MIT 许可证

7KB
175

sectorize

一个基本的库,用于将数据写入任意地址/长度的分区介质,如闪存。

用法

以下是我在使用它的方法。这是我从正在工作的项目中的一个片段(以及编写此crate的动机)。

fn write_data(&mut self, start_addr: usize, buf: &[u8]) {
    for s in SectorizeIter::new(SECTOR_SIZE, start_addr, buf.len()) {
        let mut existing = self.read_slice(s.sector_index * SECTOR_SIZE);

        // only write if there's a difference
        if existing[s.sector_start..s.sector_end] != buf[s.input_start..s.input_end] {
            existing[s.sector_start..s.sector_end]
                .copy_from_slice(&buf[s.input_start..s.input_end]);
            self.write_sector(s.sector_index * SECTOR_SIZE, &existing);
        }
    }
}

无运行时依赖