Как использовать метод on_send ответа никеля?
На никелевом веб-сервисе я хотел бы выполнить функцию после завершения отправки ответа. Я нашел метод on_send в этом документе, но я не могу заставить его создать.
Я получаю эту ошибку:
несоответствие типов: тип
[closure@src/models/plugins/session.rs:78:22: 78:31 x:_]
реализует чертуstd::ops::FnMut<()>
, но чертаfor<'r> std::ops::FnMut<(&'r mut nickel::Response<'_, D>,)>
требуется (ожидаемый кортеж, найдено ())
и этот
несоответствие типов: тип
[closure@src/models/plugins/session.rs:78:22: 78:31 x:_]
реализует чертуstd::ops::FnOnce<()>
, но чертаfor<'r> std::ops::FnOnce<(&'r mut nickel::Response<'_, D>,)>
требуется (ожидаемый кортеж, найдено ())
Мой пример кода
let mut x: usize = 1;
let update = || x += 2 ;
res.on_send(update);
куда res
является &mut Response<'mw, D>
1 ответ
Я не знаком с никелем, но ошибка говорит вам, что ваше закрытие реализует черту
std::ops::FnOnce<()>
но аргумент on_send
должно быть
for<'r> std::ops::FnOnce<(&'r mut nickel::Response<'_, D>,)>
Без полного примера кода трудно дать вам рабочий ответ. Но правильный ответ будет примерно таким:
let update = |_| x += 2;
Вы не используете аргумент кортежа, поэтому можете пометить его как неиспользуемый _
, Но вы должны указать это, иначе типы не совпадают.