gpt4 book ai didi

types - 关联类型默认使用特征

转载 作者:行者123 更新时间:2023-12-03 11:42:21 24 4
gpt4 key购买 nike

当我们需要一个依赖于特征中其他类型的类型时,如何克服关联类型默认值的问题?

    trait Foo{
type C;
type K = Vec<Self::C>;
}
error[E0658]: associated type defaults are unstable
|
3 | type K = Vec<Self::C>;
| ^^^^^^^^^^^^^^^^^^^^^^
|
= note: see issue #29661 <https://github.com/rust-lang/rust/issues/29661> for more information

最佳答案

它取决于另一种关联类型的事实是无关紧要的。尚不支持为关联类型提供默认值。

trait Foo {
type K = i32;
}
error[E0658]: associated type defaults are unstable
--> src/lib.rs:2:5
|
2 | type K = i32;
| ^^^^^^^^^^^^^
|
= note: see issue #29661 <https://github.com/rust-lang/rust/issues/29661> for more information
如果要使用当前(不稳定)的实现,则可以每晚编译一次并启用 associated_type_defaults功能,该功能适用​​于您的情况:
#![feature(associated_type_defaults)]

trait Foo {
type C;
type K = Vec<Self::C>;
}
我不确定我是否会推荐它,尽管仅基于跟踪问题所指示的内容是不完整的,但这取决于您。

话虽如此,这不应该是一个“问题”。当然可以使用默认值可能很方便,但这不是必需的。只需在实现trait时指定它:
trait Foo {
type C;
type K;
}

impl Foo for i32 {
type C = i32;
type K = Vec<Self::C>;
}

关于types - 关联类型默认使用特征,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66256767/

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