相关疑难解决方法(0)

何时使用关联类型与泛型类型是否合适?

这个问题中,出现了一个问题,可以通过改变将泛型类型参数用于关联类型的尝试来解决.这引发了一个问题"为什么相关类型在这里更合适?",这让我想知道更多.

引入相关类型RFC说:

此RFC通过以下方式阐明特征匹配:

  • 将所有特征类型参数视为输入类型,和
  • 提供相关类型,即输出类型.

RFC使用图形结构作为激励示例,这也在文档中使用,但我承认不完全理解相关类型版本相对于类型参数化版本的好处.主要的是该distance方法不需要关心Edge类型.这很好,但似乎有一点点关联类型的原因.

我发现在实践中使用相关类型非常直观,但在决定在我自己的API中何时何地使用它们时,我发现自己很挣扎.

在编写代码时,何时应该在泛型类型参数上选择关联类型,何时应该相反?

types idiomatic rust

84
推荐指数
2
解决办法
8093
查看次数

无法访问动态特征实现中的结构字段

在尝试使用通用参数实现特征并访问这些通用参数的字段时,我遇到一条错误消息,指出相关参数不包含此类字段。

下面是一些显示该问题的示例代码:

pub struct Settings {
    pub time: String,
}

pub trait Foo {
    fn get<T>(t: T);
}

struct Bar;

impl Foo for Bar {
    fn get<Settings>(t: Settings) {
        let x = t.time;
    }
}
Run Code Online (Sandbox Code Playgroud)

游乐场

编译器给出的错误信息如下:

pub struct Settings {
    pub time: String,
}

pub trait Foo {
    fn get<T>(t: T);
}

struct Bar;

impl Foo for Bar {
    fn get<Settings>(t: Settings) {
        let x = t.time;
    }
}
Run Code Online (Sandbox Code Playgroud)

这在上下文中没有什么意义。我预计这可能是我对通用特征的一些误用,但错误消息提出了这样的问题。

generics traits rust

3
推荐指数
1
解决办法
792
查看次数

标签 统计

rust ×2

generics ×1

idiomatic ×1

traits ×1

types ×1