У меня есть функция, которая принимает обратный вызов в качестве параметра:
fn my_function (on_complete: Box<dyn FnOnce(bool)) {
// Do some work
on_complete(false);
}
Работа, которую я выполняю перед вызовом, довольно тяжелая, поэтому я пытаюсь превратить ее в задачу:
fn my_function (on_complete: Box<dyn FnOnce(bool)) {
tokio::spawn(async move{
// Do some work
on_complete(false);
});
}
Это вызывает у меня всевозможные проблемы владения, а именно то, что мой Box нельзя безопасно разделить между потоками. Я пробовал несколько способов обойти это, в том числе очевидные, такие как заимствование, и более традиционные решения для потоковой передачи, такие как передача его как Ar c>, но, похоже, ничего не добился.
предложения, как это сделать правильно?