我试图了解创建struct个实例的最佳实践是什么.在C++中,我将把所有需要的东西传递给构造函数,如果不能创建struct,则抛出异常.在rust中,我被告知创建一个返回Result的方法.但这不是太多工作了吗?为什么不只是fail!()

此外,如果返回Result是一种方式,这是否意味着所有 struct 都需要工厂?

推荐答案

YourStruct的基本构造函数应该是名为YourStruct::new()的静态方法(有关更多信息,请参阅Rust style guidelines).

对于返回类型,如果没有问题,请使用YourStruct,或者如果使用fail!().如果构造函数失败只有一个明显的原因,请使用Option<YourStruct>.如果调用方无法使用它,那么知道它的原因会很有帮助.fail!()的问题在于,它没有给调用方再次try 的机会,也没有向用户传递好的错误消息,或者调用方可能想做的任何事情.在某些情况下,fail!()可能没问题.

Rust相关问答推荐

如何在Rust中实现Functor trait?

在没有引用计数或互斥锁的情况下,可以从Rust回调函数内的封闭作用域访问变量吗?

如果LET;使用布尔表达式链接(&Q);

不能在一个代码分支中具有不变的自身borrow ,而在另一个代码分支中具有可变的self borrow

如何使用RefCell::JOYMOMTborrow 对 struct 不同字段的可变引用

如果死 struct 实现了/派生了一些特征,为什么Rust会停止检测它们?

我如何使用AWS SDK for Rust获取我承担的角色的凭据?

减少指示ProgressBar在Rust中的开销

什么是`&;[][..]`铁 rust 里的刻薄?

使用 select 处理 SIGINT 和子等待!无阻塞

当我编译 Rust 代码时,我是否缺少 AVX512 的目标功能?

borrow 是由于对 `std::sync::Mutex>` 的解引用强制而发生的

Option<&T> 如何实现复制

trait 对象指针的生命周期

在给定 Rust 谓词的情况下,将 Some 转换为 None 的惯用方法是什么?

如何在 Rust 中将枚举变体转换为 u8?

仅当函数写为闭包时才会出现生命周期错误

在运行时在 Rust 中加载字体

如何从 Rust 中不同类型的多个部分加入 Path?

为什么 u64::trailing_zeros() 在无分支工作时生成分支程序集?