【发布时间】:2020-12-18 14:59:57
【问题描述】:
我有一个带有一个字符串字段的简单结构:
pub struct Chunk {
signature: String
}
这个字符串字段不能只是任何字符串,它需要满足一堆约束(如果传递给构造函数的字符串不满足这些约束,则结构的构造应该失败)。
在像 C++ 这样的面向对象语言中,我会创建执行所需检查的显式构造函数,在 Rust 中执行此操作的正确方法是什么?
我想出了这个代码:
impl Chunk {
pub fn new(s: String) -> Option<Chunk> {
if constraints_fail {
None
} else {
Some(Chunk{signature: s})
}
}
}
我不确定这是否是正确的方法,因为从技术上讲,结构仍然可以用无效的字符串参数实例化,而无需调用此函数。
【问题讨论】: