我正在尝试了解创建struct
实例的最佳做法。在C ++中,我将所需的一切传递给构造函数,如果无法创建struct
则抛出异常。在生锈中,我被告知要创建一个返回Result
的方法。但这不是太多的工作吗?为什么不只是fail!()
?
此外,如果返回Result
是可行的方法,这是否意味着所有结构都需要工厂?
答案 0 :(得分:7)
YourStruct
的基本构造函数应该是名为YourStruct::new()
的静态方法(有关详细信息,请参阅Rust style guidelines)。
对于返回类型,如果没有任何错误或使用YourStruct
,请使用fail!()
。如果构造函数失败只有一个明显的原因,请使用Option<YourStruct>
。如果调用者知道失败原因,请使用Result<YourStruct, YourStructErr>
。 fail!()
的问题在于它不会让调用者有机会再次尝试,或者将错误消息传递给用户,或者调用者可能想做的其他任何事情。在某些情况下,fail!()
可能没问题。