我们都知道,Rust有一种叫 完全限定语法(fully-qualified syntax) 的东西。请看下面的例子:
编译,会提示如下错误:
应该写成:
就可以编译通过了,这就是所谓:完全限定语法。
但是,在阅读一些工程的代码的时候,可以发现一种不寻常的用法。我设计了一个例子如下:
上面例子中,这个写法,有点超出我们的认知。泛型可以直接引用其 Trait bound 的 associated type 吗?好像是的。本例子能编译通过并顺利运行。
再来看一个稍微复杂一点的例子:
上例中的也是这种情况。
其实也并不难理解,只是在第一次遇到的时候,会很奇怪,Rust 怎么会有这种语法。于是设计了例子来验证这个问题。原来还真是可以的。
本文所有示例地址:https://github.com/daogangtang/learn-rust/tree/master/04generic_with_associated_type
领取专属 10元无门槛券
私享最新 技术干货