如何将我的一个Rust结构的实例声明为static?

Bru*_*uce 2 static struct rust

如何将我自己的一个结构的实例声明为静态?此示例无法编译:

static SERVER: Server<'static> = Server::new();

fn main() {
    SERVER.start("127.0.0.1", 23);
}
Run Code Online (Sandbox Code Playgroud)

Chr*_*gan 8

您无法const在全局范围内调用任何非函数.通常,您可以执行类似结构文字的操作,但隐私规则可能会阻止您执行此操作,其中存在私有字段且您未在同一模块中定义它.

所以,如果你有这样的事情:

struct Server<'a> {
    foo: &'a str,
    bar: uint,
}
Run Code Online (Sandbox Code Playgroud)

你可以这样写:

const SERVER: Server<'static> = Server {
    foo: "yay!",
    bar: 0,
};
Run Code Online (Sandbox Code Playgroud)

......但这是你在真实staticconst宣言中得到的最好的.有,但是,变通办法实现这样的事情,比如懒惰静电,在你的Server::new() 完全合法的.