Details on different Rust implementations of deflate?

Is there somewhere an analysis of the different Rust implementations of DEFLATE? I'm particularly interested in the decoding part, for miniz_oxide, libflate and inflate. For example, which algorithms they chose for building the Huffman tree/table(s) and decoding symbols (corresponding research paper if exist). I'm new to this and so diving into the code is quite difficult (just spent two days reading specs and trying understand implementation details of these libs without much success).

Background story

For some computer vision tasks, I'm reading data from PNG files, using the png crate. When porting to wasm the code, I realized that the PNG reading was taking way too much time (0.1s for one 640x480 image) to have anything realtime possible. Turns out the issue seems to be related to inflating the png data. So out of curiosity, I was wondering if I could try writing a PNG decoder based on the new 5.0 version of the nom parser. I've managed to parse PNG uncompressed chunks but the struggle started when I tried decoding the deflated chunks, such as zTXt and IDAT. I've had issues reading bits in the correct order to decode symbols.

For the time being, I think I'll just use miniz_oxide that seems to have great performances, but I'm still interested in reading an analysis of those algorithms if that exists since I came this long ^^.