如何使用镍响应的“on_send”方法?

时间:2017-01-16 06:26:31

标签: rust nickel

在镍网络服务上,我想在响应发送完成时执行一个功能。 我在this doc上找到了'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 个答案:

答案 0 :(得分:2)

我不熟悉Nickel,但错误告诉你闭包实现了特性

std::ops::FnOnce<()>

但是on_send的参数必须是

for<'r> std::ops::FnOnce<(&'r mut nickel::Response<'_, D>,)>

如果没有完整的代码示例,很难给出一个有效的答案。但正确答案将与此类似:

let update = |_| x += 2;

您没有使用元组参数,因此您可以使用_将其标记为未使用。但是你必须指定它,否则类型不匹配。