【发布时间】:2018-01-27 12:54:17
【问题描述】:
Scala's value classes 提供了一种在不分配运行时对象(Rust 情况下为结构)的情况下使用类型系统的方法。我正在寻找 Rust 中的等价物。
我想介绍的用例是传递一个表示 URI 的字符串,方法是使用 Uri 而不是 String 之类的注释相关签名,并且理想情况下,在 @ 时使用此 Uri预计为 987654325@。所有这一切都以最小的开销。
一个明显的解决方案是使用具有一个字段的结构:
struct Uri { val: String }
这有一个缺点是使用有点尴尬,在预期 String 的地方是不可接受的,我不确定它的开销。
Rust 中是否有类似于 Scala 的值类的东西?是否有其他机制可以促进这个用例?
【问题讨论】:
-
您可以尝试使用类型别名
type Uri = String,但类型别名不能被视为类似于Scala 的值类。 -
@EvilTak 类型别名不能用于区分 Uri 和 String。
标签: rust