async-dropper is probably the least-worst ad-hoc AsyncDrop implementation you've seen, and it works in two ways:
async_dropper::simpleis stolen nearly verbatim from this StackOverflow answer (thanks topaholg!)async_dropper::deriveprovides a trait calledAsyncDropand corresponding [derive macro][rust-derive-macro], which try to useDefaultandPartialEqto determine when to async drop.
The code in this crate powers async_dropper::simple. See the async_dropper crate for more details.