【发布时间】:2019-02-24 22:04:01
【问题描述】:
好的,所以我是个 Rust 新手,我正在试验 Rocket。该 Web 框架传递了一个 Form<MyStruct>,我想将该 MyStruct 转移到我自己的自定义结构中。
struct Consumer<T> {
d: T,
}
impl<T> Consumer<T> {
fn new(form: Form<T>) -> Self {
Consumer { d: form.into_inner() }
}
}
这当然行不通,我明白了:
the trait `rocket::request::FromForm<'_>` is not implemented for `T`
下一次尝试:
impl<T> Consumer<T> where T: FromForm {
fn new(form: Form<T>) -> Self {
Consumer { d: form.into_inner }
}
}
哦哦:
impl<T> Consumer<T> where T: FromForm {
^^^^^^^^ expected lifetime parameter
所以现在我发现自己完全无法解决这个问题!我能想到的最好的是:
impl<'f, T> Consumer<T> where T: FromForm<'f> {
fn new(form: Form<T>) -> Self {
Consumer { d: form.into_inner }
}
}
但这会导致这个错误:
51 | fn new(form: Form<T>) -> Self {
| _________^
52 | | Consumer { d: form.into_inner }
53 | | }
| |_________^ lifetime mismatch
= note: expected type `rocket::request::FromForm<'_>`
found type `rocket::request::FromForm<'f>`
【问题讨论】:
-
欢迎来到 Stack Overflow!请确保您提供了您要实现的目标的minimal reproducible example。这包括提及您如何获得
Form和FromForm(假设它们来自Rocket,您需要包括use语句)。第一个错误消息也可以扩展为看起来像其他两个(因此包括行号等)。