интерфейс.
Благодаря тому что в расте нормальные итераторы, код постраничной заливки чанками по 256 байт уложился в 3 строчки. Ни го, ни с++, ни си так не может
let firmware = "lvdt-firmware.bin";
for (n, chunk) in fs::read(firmware)?.chunks(256).enumerate() {
write_data(PageAddress::ControlAndStatus, 24, &[n as u8])?;
write_data(PageAddress::Fram, 0, chunk)?;
}
Так это сравнение std, тем более, остальная логика и код скрыт и никуда не девается.
ну я тут скорее о том что мне не надо писать что-то вроде const int pages = firmware.len() / 256; for (i = 0; i < pages; i++) { write_data(PageAddress::ControlAndStatus, 24, page, 1); write_data(PageAddress::Fram, 0, firmware[page * 256], 256); } и тут мы еще весело отстреливаем ногу, если размер прошивки не делится нацело на 256 ))
Обсуждают сегодня