Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/mercurial/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Rust 使用参数为本地类型实现外部特征时出错E0201_Rust_Traits - Fatal编程技术网

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]
    }
}