В 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
? Пример будет потрясающим.