В C/С++ я обычно делаю обратные вызовы с помощью простого указателя на функцию, возможно, передавая параметр void* userdata. Что-то вроде этого:
typedef void (*Callback)();
class Processor
{
public:
void setCallback(Callback c)
{
mCallback = c;
}
void processEvents()
{
for (...)
{
...
mCallback();
}
}
private:
Callback mCallback;
};
Что такое идиоматический способ сделать это в Rust? В частности, какие типы должны использовать мои функции setCallback(), и какой тип должен быть mCallback? Должен ли он взять Fn? Может быть, FnMut? Сохранить его Boxed? Пример будет потрясающим.