【发布时间】:2021-04-21 08:06:41
【问题描述】:
在 Rust 中,是否可以为类型定义约束?
类似于数据库中的约束。
示例:具有只能分配有效电子邮件的电子邮件类型
示例:具有只能分配 "male" 或 "female" 的性别类型
更清楚的例子:
type email = string;
/// Do something here to constrain the type to only accept valid emails assigned to it.
let my_mail: email = "something@domain.com" // -> OK
let my_mail2: email = "something" // -> Error
我想知道这是否不仅适用于结构成员。
【问题讨论】:
-
您可以定义一个函数
fn set_mail(mail: &str) -> Result<(), ()>,如果它不符合您的要求则返回错误?不过我不明白你的问题。 -
还是使用只能通过检查值的方法访问的newtype?
-
注意:对于第二个例子,
enums 就是这样做的。 -
@Jmb 创建一个函数似乎是我正在寻找的,它类似于基于类的语言中的设置器。
标签: variables types rust constraints assign