gpt4 book ai didi

rust - 使用参数为本地类型实现外部特征时出现错误 E0201

转载 作者:行者123 更新时间:2023-11-29 08:15:39 25 4
gpt4 key购买 nike

我正在尝试将 C 类型参数添加到此代码 ( playground ):

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

但这样做会导致此错误消息:

error[E0210]: type parameter `C` must be used as the type parameter for some local type (e.g. `MyStruct<C>`)
--> src/lib.rs:6:1
|
6 | impl<C> Index<ConnectionHandle> for Vec<Connection<C>> {
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ type parameter `C` must be used as the type parameter for some local type
|
= note: only traits defined in the current crate can be implemented for a type parameter

为什么不允许这样做? Connection 是本地的,因此根据 E0201 的解释,这似乎不应导致孤儿。

最佳答案

问题是 Vec<Connection<C>>不被视为本地类型,因为 Vec不是本地的(也不是 fundamental )。

RFC 2451但是,将使它合法。 An implementation was merged 1 月 4 日,所以它还不稳定,但如果 re_rebalance_coherence,它可以与最近的每晚一起使用功能已启用。

关于rust - 使用参数为本地类型实现外部特征时出现错误 E0201,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54400991/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com