rust - 如何使用 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
。
解决方案
推荐阅读
- mysql - 优化多次插入的存储过程
- prometheus - 默认值 Prometheus 标签
- c# - mdf localdb上的不同用户帐户授权
- javascript - 使用 CSS 自动滚动聊天框
- sql - 如何在 Hive 中查找两个时间戳日期之间的年数?
- html - 无法使用 Moongose-Pagination-v2 插件在 Datatable 中进行搜索
- wordpress - 使用 add_entry() 以编程方式创建 Gravity Forms 条目,但仍调用通常的钩子
- javascript - 如何使用多个条件指定 JSDOM fromFile
- android - OKHTTP3 抛出 ConnectionShutdownException
- r - 从字符串集中提取第一个字符