如何将我自己的一个结构的实例声明为静态?这个样本没有编译:
static SERVER: Server<'static> = Server::new();
fn main() {
SERVER.start("127.0.0.1", 23);
}
答案 0 :(得分:7)
您无法在全局范围内调用任何非const
函数。通常,您可以执行类似结构文字的操作,但隐私规则可能会阻止您执行此操作,其中存在私有字段且您未在同一模块中定义它。
所以,如果你有这样的事情:
struct Server<'a> {
foo: &'a str,
bar: uint,
}
你可以这样写:
const SERVER: Server<'static> = Server {
foo: "yay!",
bar: 0,
};
...但这是真正的static
或const
声明中最好的。但是,有一些解决方法可以实现lazy-static,Server::new()
完全合法。{/ p>