源码链接 https://files.cnblogs.com/files/xlabs/test.rar
error[E0308]: mismatched types
note: expected trait `for<'a> <for<'a> fn(&'a mut RequestCtx) -> impl Future<Output = hyper::Response<Body>> {Server::handle_not_found} as FnOnce<(&'a mut RequestCtx,)>>`
found trait `for<'a> <for<'a> fn(&'a mut RequestCtx) -> impl Future<Output = hyper::Response<Body>> {Server::handle_not_found} as FnOnce<(&'a mut RequestCtx,)>>`
把下面这个trait的参数ctx:&mut RequestCtx改为ctx:RequestCtx是没有问题的,但是该如何改为ctx:&mut RequestCtx呢??
#[async_trait::async_trait]
pub trait HTTPHandler: Send + Sync + 'static {
async fn handle(&self, ctx:&mut RequestCtx) -> Response;
}
1
共 14 条评论, 1 页
评论区
写评论搞定了
--
👇
wangbyby: 所以,解决你的问题了吗
--
👇
xbitlabs: 好嘞,谢谢
--
👇
wangbyby: 下次建议提取最小用例哦
要简化语法用macro 干嘛要转为dyn object dyn 扯上生命周期 哎 反正我是受够了.
--
👇
xbitlabs: 哈哈,请指教
--
👇
shanliu: 这封装的. 哎. 当动态语言搞.
所以,解决你的问题了吗
--
👇
xbitlabs: 好嘞,谢谢
--
👇
wangbyby: 下次建议提取最小用例哦
好嘞,谢谢
--
👇
wangbyby: 下次建议提取最小用例哦
下次建议提取最小用例哦
哈哈,请指教
--
👇
shanliu: 这封装的. 哎. 当动态语言搞.
这封装的. 哎. 当动态语言搞.
改了之后报什么错误
--
👇
xbitlabs: 改成这样也没有用
--
👇
Grobycn: 你修改一下函数啊, 改成这样:
改成这样也没有用
--
👇
Grobycn: 你修改一下函数啊, 改成这样:
你修改一下函数啊, 改成这样:
handle_not_found不是trait,是一个已经实现了的函数,应该没法这样加吧
--
👇
Grobycn: 类型不匹配,这里指的是
FnOnce::Output
两个不匹配 先看看impl HTTPHandler for F
对 F 的要求:再看一下
handle_not_found
的函数签名:这里编译器推断不出来
Send + 'static
,故报错 加上Send
和'static
,可以通过编译类型不匹配,这里指的是
FnOnce::Output
两个不匹配 先看看impl HTTPHandler for F
对 F 的要求:再看一下
handle_not_found
的函数签名:这里编译器推断不出来
Send + 'static
,故报错 加上Send
和'static
,可以通过编译