(&self, addr: usize, dst: &mut [u8])
| 153 | |
| 154 | #[inline(always)] |
| 155 | fn read(&self, addr: usize, dst: &mut [u8]) -> usize { |
| 156 | if addr >= self.len || dst.is_empty() { |
| 157 | return 0; |
| 158 | } |
| 159 | |
| 160 | let chunk_idx = addr >> self.chunk_shift; |
| 161 | let chunk_offset = addr & self.chunk_mask; |
| 162 | let chunk_end = min((chunk_idx + 1) << self.chunk_shift, self.len); |
| 163 | let read_len = min(chunk_end - addr, dst.len()); |
| 164 | if let Some(chunk) = self.chunk_slice(chunk_idx) { |
| 165 | dst[..read_len].copy_from_slice(&chunk[chunk_offset..chunk_offset + read_len]); |
| 166 | } else { |
| 167 | dst[..read_len].fill(0); |
| 168 | } |
| 169 | |
| 170 | read_len |
| 171 | } |
| 172 | |
| 173 | #[inline(always)] |
| 174 | fn write(&mut self, addr: usize, src: &[u8]) -> usize { |
nothing calls this directly
no test coverage detected