Without AsyncDrop, awaiting at item being dropped is non-trivial.
This wrapper allows awaiting it, and can therein be used to perform async clean-up on the contents of an Arc or similar, when it is no longer in use.
use DropBear;
let = new;
drop;
assert_eq!; // => true
use DropBear;
let = new;
let arc = new;
// Pass the arc elsewhere, handing ownership over
// Or clone it elsewhere, do some work here, then drop your copy
// Receive the original item once the last Arc instance is dropped
let original_item = notify.await.unwrap;
// ... and perform async cleanup on the contents
perform_cleanup.await;