Dlopen vs libloading vs sharedlib for using dynamically linked libraries

I don't clearly see the differences between dlopen, libloading and sharedlib.
Basically I am looking for a way to use dynamically loaded shared libraries in rust with the least possible overhead (crossplatform use is now not a priority for me)
the documentation of the dlopen create sounds like it would be simply better. is it that simple?

I don't know, it's the author's claim, but I've been using libloading for very long, never had a issue. it works smoothly for me.