pub fn read_section<T, F>(
reader: &mut PsdReader<'_>,
round: usize,
func: F,
skip_empty: bool,
eight_bytes: bool,
) -> ReadResult<Option<T>>Expand description
Зеркало readSection<T>(reader, round, func, skipEmpty = true, eightBytes = false).
Читает length-prefixed секцию, вызывает func с замыканием left()
(сколько байт осталось до конца секции), затем выравнивает курсор на конец
секции, округлённый так, чтобы length стал кратен round.
Логика округления воспроизведена ровно: while (length % round) { length++; end++; }.
func принимает &mut PsdReader и &dyn Fn(&PsdReader) -> usize (вычисление
left()). Поскольку Rust не даёт замыканию захватить reader, который
одновременно передаётся мутабельно в func, left принимает текущий ридер
явным аргументом — это эквивалент upstream’а, где left читает reader.offset.