问题描述
我想创建一个结构,该结构的构造函数只能被调用一次。例如:
pub struct Example;
impl Example {
pub fn new() -> Self {
// Do stuff
}
}
fn main() {
Example::new() // This should work fine
Example::new() // This should panic
}
到目前为止,我唯一想到的方法是使用static mut: bool
并使构造函数不安全:
static mut CONSTRUCTED: bool = false;
pub struct Example;
impl Example {
pub unsafe fn new() {
if CONSTRUCTED {
panic!("You many only construct Example once");
}
else {
CONSTRUCTED = true;
}
}
}
虽然这很好,但我想找到一种不使用不安全生锈的解决方案,或者至少不强制某人使用Example
结构使用不安全生锈的解决方案。也许可以使用FnOnce
特性来完成?
重申一下,我的问题是:我可以在仅能被调用一次的安全锈中创建一个公共函数吗?
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)