14得票2回答
为什么引入关联类型会影响我的性能?

在我的kdtree项目中,我刚刚将深度计数器从基于Int替换为基于类型a的明确Key a。这就是diff。 现在,虽然我认为这应该只是一种类型级别的改变,但我的基准测试显示性能急剧下降: 以前: benchmarking nr/kdtree_nr mean: 60.19084 us, ...

14得票2回答
无法在Swift中将协议作为关联类型用于另一个协议

我有一个协议,Address,它继承自另一个协议,Validator,并且Address在扩展中满足了Validator的要求。 还有另一个协议FromRepresentable,它有一个associatedType(ValueWrapper)的要求,应该是Validator。 现在,如果...

12得票1回答
在Haskell中编写仅适用于关联类型的函数

我想寻找一种更优雅的方法来编写以下代码。class C c where type E c :: * -> * class C c => A c where g :: E c a -> E c a class (C c, A c) => D c whe...

11得票1回答
Swift - 协议只能用作泛型约束,因为它具有Self或关联类型要求。

我正在开发一个应用程序,需要查询多个API。我为每个API提供者编写了类(在更极端的情况下,为每个特定的API端点编写了类)。这是因为每个API查询都预期返回非常严格的响应类型,因此,如果一个API可以返回用户资料和资料图片,我只想让响应特定于其中之一。 我大致按以下方式实现它: prot...

11得票1回答
如何对具有关联类型的trait进行限定?

我对Rust非常陌生,因此可能会混淆术语。 我想使用hashes库进行一些哈希操作,并且我想在运行时动态选择要使用的算法(如sha256、sha512等)。 我想写出类似于以下的代码: let hasher = match "one of the algorithms" { "s...

10得票2回答
Swift:typealias和协议中带有值的associatedtype有什么区别?

在Swift中,以下代码可以编译通过。 protocol P1 { associatedtype T = Int } protocol P2 { typealias T = Int } 对我来说,这两者的行为几乎完全相同。唯一的区别是在可以使用 P1 的时候有其他限制,...

10得票1回答
如何在关联类型中有一个无法命名的情况下实现trait?

我有一个返回 impl Trait 的函数,因此我无法访问具体的返回类型。 我需要将该函数的返回值用作 trait 中的关联类型。如何实现? 这是一个简化的例子:fn f() -> impl Iterator<Item = u8> { std::iter::empt...

8得票1回答
如何使协议关联类型要求协议继承而不是采用协议

在我的Swift项目中,我有一个使用协议继承的情况,如下所示: protocol A : class{ } protocol B : A{ } 我接下来想要实现的是声明另一个带有关联类型的协议,这个关联类型必须继承自协议A。如果我试图这样声明: protocol AnotherP...

7得票1回答
Swift - 在带有where子句的协议中使用关联类型?

考虑以下内容: protocol SomeProtocol { typealias F: Foo typealias FB: FooBar where FB.Foo == F } 但是这段代码无法编译,因为我们无法像那样在typealias中加入where子句。 我可能漏掉了什...

7得票1回答
使用不同关联类型实现协议

我有一个协议,其中包含一个关联类型和两个方法。这两个方法都为协议的关联类型定义了不同的泛型约束。我想让结构体符合该协议,但使用两种不同的关联类型。 protocol Convertable { associatedtype TargetType func convert() ...