相关疑难解决方法(0)

在Rust中禁用默认构造函数?

假设我在Rust库中定义自己的类型,如下所示:

struct Date {
    year: u16,
    month: u8,
    day: u8
}

impl Date {
    fn new(y: u16, m: u8, d: u8) -> Date {
        // Do some validation here first
        Date { year: y, month: m, day: d }
    }
}
Run Code Online (Sandbox Code Playgroud)

有没有办法要求用户使用Date::new构造函数?换句话说,我可以以某种方式禁止用户使用默认构造函数创建自己的Date结构,如下所示:

let d = Date { 2017, 7, 10 };
Run Code Online (Sandbox Code Playgroud)

我问,因为如果你不能强迫开发人员在设置结构的成员之前通过一系列验证来运行他们的参数,这似乎是一个有害的缺陷.(虽然,也许在Rust中我应该使用其他一些模式,比如在使用数据时验证数据而不是在创建数据时;可以随意评论.)

rust

10
推荐指数
1
解决办法
866
查看次数

标签 统计

rust ×1