使用特征约束为通用闭包键入签名

时间:2015-04-06 22:17:26

标签: rust

我有以下结构可以正常工作:

pub struct Pattern {
    pub regex: &'static str,
    pub view: Fn (Request) -> Response,
}

但是我想更改view以接受任何实现Renderable的类型(特征约束)。我期待以这种方式工作:

pub struct Pattern {
    pub regex: &'static str,
    pub view: Fn <T: Renderable> (Request) -> T,
}

但没有运气。有什么想法吗?

1 个答案:

答案 0 :(得分:1)

您希望在结构(以及该结构的任何实现)上使用where子句:

trait A { fn moo(&self); }
struct S;

struct Pattern<T>
    where T: A
{
    view: Fn (T) -> S,
}

fn main() {}