Rust 使用参数为本地类型实现外部特征时出错E0201
我正在尝试将Rust 使用参数为本地类型实现外部特征时出错E0201,rust,traits,Rust,Traits,我正在尝试将Ctype参数添加到此代码(): 使用std::ops::Index; 结构连接句柄(usize); 结构连接(C); Vec的impl索引{ 类型输出=连接; fn索引(&self,ch:ConnectionHandle)->&self::输出{ &自我[ch.0] } } 但这样做会导致以下错误消息: error[E0210]:类型参数'C'必须用作某些本地类型(例如'MyStruct')的类型参数 -->src/lib.rs:6:1 | 6 | Vec的impl索引{ |必须
C
type参数添加到此代码():
使用std::ops::Index;
结构连接句柄(usize);
结构连接(C);
Vec的impl索引{
类型输出=连接;
fn索引(&self,ch:ConnectionHandle)->&self::输出{
&自我[ch.0]
}
}
但这样做会导致以下错误消息:
error[E0210]:类型参数'C'必须用作某些本地类型(例如'MyStruct')的类型参数
-->src/lib.rs:6:1
|
6 | Vec的impl索引{
|必须将类型参数“C”用作某些本地类型的类型参数
|
=注意:类型参数只能实现当前板条箱中定义的特征
为什么不允许这样做?
连接
是本地的,因此根据对E0201
的解释,这似乎不会导致孤立。问题是Vec
不被视为本地类型,因为Vec
不是本地的(也不是)
但是将使其合法化。在1月4日,因此它还不稳定,但如果启用了re\u rebalance\u coherence
功能,它将与最近的一个晚上一起工作
use std::ops::Index;
struct ConnectionHandle(usize);
struct Connection<C>(C);
impl<C> Index<ConnectionHandle> for Vec<Connection<C>> {
type Output = Connection<C>;
fn index(&self, ch: ConnectionHandle) -> &Self::Output {
&self[ch.0]
}
}