impl Foo<T> { ... }
Run Code Online (Sandbox Code Playgroud)
是T类型参数,还是名为T?的实际类型?如果您回答了第二个问题,那么您已经完全抛弃了泛型:不可能为一组通用类型实现功能.如果你回答了第一个,那么你如何建议用户这样做:
impl Foo<T> { /* generic stuff */ }
impl Foo<i32> { /* i32-specific stuff */ }
impl Foo<u32> { /* u32-specific stuff */ }
Run Code Online (Sandbox Code Playgroud)
这也只是3 impl块进行命名的类型参数T,i32和u32分别.
你可能会说"好吧,只是从上下文决定".现在,为了弄清楚发生了什么,用户不仅要检查模块的其余部分,还要检查所有导入的符号以及标准库的前奏中的任何内容,以便确定类型是否为参数.鲁斯特憎恶这种模棱两可的态度.
这是目前为止,远简单的编译器和读者只是具体说明是什么,是不是一个参数.
你不必与要做到这一点struct,因为在括号中的东西不可能是任何其他的不是类型参数声明.