gpt4 book ai didi

rust - 如何创建一个特征来指定超特征的关联类型?

转载 作者:行者123 更新时间:2023-11-29 08:00:09 24 4
gpt4 key购买 nike

我想创建一个抽象特征来指定索引类型和值类型,其中实现特征的任何结构都必须实现 Index<IndexType>IndexMut<IndexType>并定义了 Output在实现特征的每个结构中保持相同的类型。

我尝试创建一个特征,但似乎无法指定输出类型:

use std::ops::{Index, IndexMut};

struct Coord;
struct LightValue;

trait LightMap: Index<Coord> + IndexMut<Coord> {}

impl LightMap {
type Output = LightValue;
}
warning: trait objects without an explicit `dyn` are deprecated
--> src/lib.rs:8:6
|
8 | impl LightMap {
| ^^^^^^^^ help: use `dyn`: `dyn LightMap`
|
= note: `#[warn(bare_trait_objects)]` on by default

error[E0191]: the value of the associated type `Output` (from the trait `std::ops::Index`) must be specified
--> src/lib.rs:8:6
|
8 | impl LightMap {
| ^^^^^^^^ associated type `Output` must be specified

error[E0202]: associated types are not yet supported in inherent impls (see #8995)
--> src/lib.rs:9:5
|
9 | type Output = LightValue;
| ^^^^^^^^^^^^^^^^^^^^^^^^^

如果我不指定输出类型,那么 associated type Output must be specified在我尝试使用该特征的任何地方都会发生。

最佳答案

关于rust - 如何创建一个特征来指定超特征的关联类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58307250/

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