1

在镍网络服务上,我想在响应发送完成时执行一个函数。我在这个文档上找到了 'on_send' 方法,但我无法构建它。

我收到此错误:

类型不匹配:类型[closure@src/models/plugins/session.rs:78:22: 78:31 x:_]实现了 trait std::ops::FnMut<()>,但 traitfor<'r> std::ops::FnMut<(&'r mut nickel::Response<'_, D>,)>是必需的(预期的元组,found ())

和这个

类型不匹配:类型[closure@src/models/plugins/session.rs:78:22: 78:31 x:_]实现了 trait std::ops::FnOnce<()>,但 traitfor<'r> std::ops::FnOnce<(&'r mut nickel::Response<'_, D>,)>是必需的(预期的元组,found ())

我的代码示例是

let mut x: usize = 1;
let update = || x += 2 ;
res.on_send(update);

res在哪里&mut Response<'mw, D>

4

1 回答 1

2

我不熟悉镍,但错误告诉你你的闭包实现了这个特征

std::ops::FnOnce<()>

但需要的论点on_send

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

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

let update = |_| x += 2;

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

于 2017-01-16T13:54:29.277 回答