struct - 如何将我的 Rust 结构之一的实例声明为静态的?

标签 struct static rust

<分区>

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

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

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

最佳答案

您不能在全局变量中调用任何非const 函数。通常,您将能够执行类似结构文字的操作,尽管隐私规则可能会阻止您这样做,因为有私有(private)字段并且您没有在同一模块中定义它。

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

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

你可以这样写:

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

... 但这是您在真正的 staticconst 声明中所能获得的最好结果。然而,有一些解决方法可以实现这种事情,例如 lazy-static ,其中您的 Server::new() 是完全合法的。

关于struct - 如何将我的 Rust 结构之一的实例声明为静态的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26771078/

相关文章:

C# 将指向结构(包含不可直接传送类型)的指针传递给非托管 C++ DLL

java - 实例化静态嵌套类而不限定封闭类

rust - Rust不能在hashmap中插入不同的结构

c - 我应该返回函数中的指针以便我可以使用它们吗?例如,我应该返回 table2_entry 吗?

c++ - 将数据输入到具有指针成员变量的结构中

C++ 静态成员的多个实例

java - Java 中静态的最佳用途是什么

rust - 我可以编写一个迭代器来改变自身然后产生对自身的引用吗?

rust - 如何定义可以返回给定整数类型的通用函数?

C程序: strcasecmp() not working