The global pool never terminates. A local pool will terminate after dropping, but not synchronously, so it's still possible for you to race to the exit while the threads are alive. This shouldn't be any problem in practice, but I don't know if you can convince miri that it's ok.
If you really want to be strict about it, you can use build_scoped -- just call thread.run() in the wrapper and the rest of your code in the other closure using the pool.