fn read_string()

in src/reader.rs [234:252]


    fn read_string(&mut self) -> Result<String, GcovReaderError> {
        let len = read_u!(u32, self)?;
        if len == 0 {
            return Ok("".to_string());
        }
        let len = len as usize * 4;
        let start = self.pos;
        self.pos += len;
        if self.pos <= self.buffer.len() {
            let bytes = &self.buffer[start..self.pos];
            let i = len - bytes.iter().rev().position(|&x| x != 0).unwrap();
            Ok(unsafe { std::str::from_utf8_unchecked(&bytes[..i]).to_string() })
        } else {
            Err(GcovReaderError::Str(format!(
                "Not enough data in buffer: cannot read string in {}",
                self.get_stem()
            )))
        }
    }