Skip to content

5.7 trait 别名

跟 type alias 类似的,trait 也可以起别名(trait alias)。假如在某些场景下,我们有一个比较复杂的 trait:

rust
pub trait Service {
    type Request;
    type Response;
    type Error;
    type Future: Future<Item=Self::Response, Error=Self::Error>;
    fn call(&self, req: Self::Request) -> Self::Future;
}

每次使用这个 trait 的时候都需要携带一堆的关联类型参数。为了避免这样的麻烦,在已经确定了关联类型的场景下,我们可以为它取一个别名,比如:

rust
trait HttpService = Service<Request = http::Request,
        Response = http::Response,
        Error = http::Error>;

Released under the MIT License