如何创建一个简单的基础单例?

3
我的意图是创建一个单例,但不知道在Rust中如何处理,我已经阅读了这个这个,但不确定是否这是创建一个简单单例的方式,因为其中一个讲到了“可变单例”,而另一个则讲到了“安全静态单例”。

我问这个问题是因为之前没有解释清楚,而且已经有了答案,所以我做了这个并删除了其他的更新,以接受答案而无需更新。 - Angel Angel
简单的回答是:你不需要这样做。使用单例模式几乎从来都不是一个好主意。 - Hauleth
请描述您想要使用单例模式做什么。如果您不需要改变任何东西,那么还有其他选择。 - Shepmaster
@Shepmaster 没有特定的身份,我正在创建在其他语言中使用的东西,以学习Rust的知识。不是变异,只是它始终返回对象的相同实例。 - Angel Angel
2
我想警告大家不要盲目地从其他编程语言中复制概念,因为这样你很少能发现一个语言独特和有用的东西。无论如何,看起来你想要某种常量。请按照此答案中使用lazy-static的说明,并跳过包装Mutex - Shepmaster
元注释通常应该留在注释中,而不是问题中。如果问题重复了,你也不应该删除它——Stack Overflow 使用重复问题来帮助谷歌搜索者查找信息。 - Veedrac
1个回答

6

单例模式只是一种懒加载的静态数据。这意味着你确实需要lazy-static

请注意

对于给定的static ref NAME: TYPE = EXPR;,该宏会生成一个实现Deref<TYPE>并将其存储在名为NAME的静态变量中的唯一类型。

这意味着NAME实际上类似于"单例"的构造函数,而&*NAME就是"单例"本身。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接