trait Responder{
}
struct App;
impl App {
fn new() -> Self {
Self {}
}
fn service<T, B>(&self, routes: T) -> Self where T: Fn()-> impl Responder {
Self {}
}
}
struct Routes {
data:String,
}
impl Responder for Routes{
}
fn routes() -> impl Responder {
Routes {
data: "Hello".to_string()
}
}
fn main() {
// let new_routes = routes;
App::new().service(routes);
}
Run Code Online (Sandbox Code Playgroud)
如何向函数传递一个返回impl Trait或在我的情况下的参数impl Responder。
它给出的错误是:impl Trait不允许在函数和固有方法返回类型之外。
你不能 - 文档(和错误)明确表明该impl trait语法只能在从函数返回值时使用,以帮助编译器推断事物(关于值)。在您的情况下,您试图谈论有关泛型类型的内容,这是不一样的,因此无法使用此语法。
相反,您必须指定一种类型,在您的情况下是带有约束的通用类型:
fn service<T, B>(&self, routes: T) -> Self where T: Fn()->B, B: Responder
Run Code Online (Sandbox Code Playgroud)
假设您不需要B其他东西。Noteroutes返回具有特定类型的值,而不是impl trait,并且此类型是您要写出的类型。
| 归档时间: |
|
| 查看次数: |
7734 次 |
| 最近记录: |