So first things first, you absolutely don't need to understand a library in order to use it. For larger codebases (e.g. 100k+) you won't be expected to know all of its nooks and crannies, even if you were the original author.
My preferred way to learn a library is to pull up the API docs or examples and look for the "main" object. Normally there'll be a handful of central concepts that the rest of the library is written around, then you can click around its methods and see what other things it interacts with. Assuming everything was given appropriate names, you can build up a pretty good mental map of the library that way.
For example in the the
zip crate (for reading/writing zip files) the two main types are the
ZipArchive (for reading) and the
ZipWriter (for writing). From there I can start writing a file by passing it a name and some
FileOptions, then I use the
std::io::Write implementation to write data to that file (because that's what the docs tell me to do), then when I'm done writing all files I'll call the
ZipWriter::finish() method to flush everything to disk and do any final cleanup. Those three methods cover the vast majority of my zip archive writing needs.
If you find it hard to understand API docs, something as large and popular as GGEZ will almost certainly also have a bunch of blog posts and tutorials written about it. These will take different approaches and be written by different authors, so there's a good chance you'll find something that clicks.