First, this list is 5 years out of date but may have some options for you:
Although it is not a standalone client, there are 2 ways of doing this with the Nginx server worth mentioning:
1- with normal nginx, there is support via the dehydrated client. Instructions are on that page, but i'll talk about that below.
2- with the openresty fork, there are several opm lua packages that bring tls-alpn-01 into the stack. they include OPM - OpenResty Package Manager and OPM - OpenResty Package Manager . while the first option embeds the client into openresty, the second defers work to golang... which ties into section 1 above... Several other projects in openresty do this too, IIRC.
Going back to the nginx+dehydrated, that info is here and worth reading:
basically, a popular integration for nginx/openresty - and some other servers - is to proxy the TLS-ALPN-01 onto a commandline script or secondary service. there is probably a way you can leverage this strategy into your rust server using one of those tools (dehyrdated or the golang invoked by the openresty option), or a rust tool.