有没有一种方法可以在Rust中创建静态字符串?
我尝试过:
static somestring: String = String::new();
但我收到此错误:
error: `std::string::String::new` is not yet stable as a const fn
--> src/main.rs:2:29
|
2 | static somestring: String = String::new();
|
How to create a static string at compile time不能解决我的问题,因为它是关于&'static str
而不是String
的。我需要String
是可全局寻址的。
答案 0 :(得分:1)
请勿将String
类型与str
类型混淆。
What are the differences between Rust's `String` and `str`?
字符串是可变的,并且总是堆分配的。
通常以&str表示的str不可更改,而只是一个字符串视图。
您的问题似乎使静态的思想和全球适用的的思想混淆。静态字符串应理解为随程序一起编译的字符串,并且可以完整使用(具有“静态生存期”),这些字符串通常以&'static str的形式出现。这样的字符串自然不会发生突变。但是您可以从中创建一个字符串。
如果您想要的是可全局访问的String并想在 static 中定义它,考虑到问题中缺少上下文,我可能建议使用宏lazy-static:
https://crates.io/crates/lazy_static
正如麦卡顿(Mcarton)所说,这个问题似乎可以归结为单例模式。您可以在How do I create a global, mutable singleton?
上了解有关在Rust中实现的更多信息。