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

问题描述 投票:2回答:1

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

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

fn main() {
    SERVER.start("127.0.0.1", 23);
}
struct static rust
1个回答
7
投票

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

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

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

你可以这样写:

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

......但这是你在真正的staticconst宣言中获得的最好成绩。然而,有一些解决方法可以实现这类事情,例如lazy-static,其中你的Server::new()是完全合法的。

© www.soinside.com 2019 - 2024. All rights reserved.