Today I learned
While the default linking is dynamic for Rust and using OpenSSL you can change the default and use static linking as well. For my use case I had a different setup on the build machine and the target deployment (yes, no docker here). So I needed to statically link OpenSSL instead.
Turns out you can very easily change that in Rust via:
OPENSSL_STATIC=yes OPENSSL_LIB_DIR=/usr/lib/x86_64-linux-gnu OPENSSL_INCLUDE_DIR=/usr/include/ cargo build
OPENSSL_STATIC param tells cargo to use static binding for OpenSSL.
Whilst the second param
OPENSSL_LIB_DIR is used to specify OpenSSL's library folder.
Last but not least we have
OPENSSL_INCLUDE_DIR for telling cargo where to find the OpenSSL header files.
And that's it.
Of course, in most cases you probably want dynamic linking (and get a smaller executable) but in some cases this helps a lot.