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

时间:2014-11-06 03:08:28

标签: struct static rust

如何将我自己的一个结构的实例声明为静态?这个样本没有编译:

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

fn main() {
    SERVER.start("127.0.0.1", 23);
}

1 个答案:

答案 0 :(得分:7)

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

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

struct Server<'a> {
    foo: &'a str,
    bar: uint,
}

你可以这样写:

const SERVER: Server<'static> = Server {
    foo: "yay!",
    bar: 0,
};

...但这是真正的staticconst声明中最好的。但是,有一些解决方法可以实现lazy-staticServer::new() 完全合法。{/ p>