如何解决actix-web的Form类型“serde::Deserialize的实现不够通用”的问题?

问题描述

我正在使用 actix-web 构建网络服务器。我的一个端点尝试将传入的数据反序列化为表单结构:

#[get("/tweets4")]
async fn tweets4(form: web::Form<TweetParams<'_>>) -> HttpResponse {
    println!("{} {} {}",form.page,form.sort_by,form.timeframe);
    HttpResponse::Ok().body("worked")
}

#[derive(serde::Deserialize,serde::Serialize,Debug)]
struct TweetParams<'a> {
    page: &'a str,sort_by: &'a str,timeframe: &'a str,}

我得到的错误

error: implementation of `_::_serde::Deserialize` is not general enough
  --> src/main.rs:82:1
   |
82 | #[get("/tweets4")]
   | ^^^^^^^^^^^^^^^^^^ implementation of `_::_serde::Deserialize` is not general enough
   |
   = note: `TweetParams<'_>` must implement `_::_serde::Deserialize<'0>`,for any lifetime `'0`...
   = note: ...but `TweetParams<'_>` actually implements `_::_serde::Deserialize<'1>`,for some specific lifetime `'1`
   = note: this error originates in an attribute macro (in Nightly builds,run with -Z macro-backtrace for more info)

我对破译错误及其可能意味着什么感到非常困惑。听起来编译器对 Serde 的开箱即用 Deserialize 实现不满意 - 但我该如何解决

当我从结构内的 &str 切换到 String 时出现此错误

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...