Correct me if I'm wrong, but it seems there's quite an amount of duplicated work performed if multiple icons are queried. It would be nice, if that state can be reused somehow (e.g. index parsed only once).
I don't have any benchmarks, but for my case I need to get path to every available icon on the system. Here's the code if you interested, though it doesn't use linicon (at least yet). It loads all available icons once at startup and then display list of installed applications with related icons. Maybe it just a bad fit for the crate?
You are correct that the current implementation of the library is not optimized for multiple lookups. I could make it more optimized for that use but it'll require some substantial changes to do right so I need to think on it.
I agree that linicon in not currently suited for your use case. If I decide to make the above changes the new design may be more suitable.