pub fn new(db: DB) -> (Self, MerkleTreePrunerHandle) {
        let (aborted_sender, aborted_receiver) = mpsc::channel();
        let target_retained_version = Arc::new(AtomicU64::new(0));
        let handle = MerkleTreePrunerHandle {
            _aborted_sender: aborted_sender,
            target_retained_version: Arc::downgrade(&target_retained_version),
        };
        let this = Self {
            db,
            target_pruned_key_count: 500_000,
            poll_interval: Duration::from_secs(60),
            aborted_receiver,
            target_retained_version,
        };
        (this, handle)
    }
Creates a pruner with the specified database.

# Return value

Returns the created pruner and a handle to it. *The pruner will be aborted when its handle is dropped.*
core/lib/merkle_tree/src/pruning.rs