associated-types相关内容

Swift-协议中与where子句相关的类型?

请考虑以下内容: protocol SomeProtocol { typealias F: Foo typealias FB: FooBar where FB.Foo == F } 但是这不能编译,因为我们不能像这样将where子句放在typealias中. 我必须在这里丢失一些东西,因为可以使用type parameterization这样轻松地做到这一点: str ..
发布时间:2020-06-21 18:47:14 移动开发

为什么计数返回不同类型的集合与数组?

当我扩展Collection时,count的类型为IndexDistance. 当我扩展Array时,键入count的类型是Int 为什么有这样的区别?这是最近的变化还是一直如此? 我已经阅读了这个答案,但是收拾不了. 我认为唯一但不了解的是: 另一个优点是this [IndexDistance]也可以正常工作 与数组切片(其中第一个元素的索引不是 必须为零 不 ..
发布时间:2020-06-21 18:47:08 移动开发

为什么编译器看不到协议中的默认代码?

编辑:我已经重申并希望通过我已经定义了一个函数(请参见附件中的foo())作为struct采用我的protocol的默认函数.它使用针对其他两个变量定义的+运算符,它们本身采用其他protocols,并且+是在那些协议之一中定义的.使用associatedtype键入变量. 我收到消息: 二进制运算符'+'不能应用于类型为'Self.PointType'和'Self.VectorType'的 ..

关联特征类型的约束

这是一个(有些人为设计的)例子,用来说明我想做的事 pub trait Node: Eq + Hash { type Edge: Edge; fn get_in_edges(&self) -> Vec; fn get_out_edges(&self) -> Vec; } pub trait Edge { ..
发布时间:2020-06-21 18:46:57 其他开发

如何对具有关联类型的特征进行装箱?

我对Rust还是很陌生,所以我可能对术语感到困惑. 我想使用哈希板条箱进行一些哈希处理,并且我想动态选择哪种算法(sha256,sha512等)在运行时使用. 我想写这样的东西: let hasher = match "one of the algorithms" { "sha256" => Box::new(Sha256::new()) as Box, ..
发布时间:2020-06-21 18:46:53 其他开发

无法在Swift中的另一个协议中使用协议作为关联类型

我有一个协议,地址,它继承自另一个协议, Validator 和地址满足扩展中的 Validator 要求。 还有另一个协议 FromRepresentable ,它有一个 associatedType ( ValueWrapper )要求应为 Validator 。 现在如果我尝试使用地址作为 associatedType ,然后它不编译。它说, 推断类型'地址'(通过匹配要求 ..
发布时间:2018-08-30 17:19:50 移动开发