1
如何將我自己的結構之一的實例聲明爲static?這個樣本顯然不能編譯,但它應該證明我的意圖。Rust靜態結構聲明
static SERVER: Server<'static> = Server::new();
fn main() {
SERVER.start("127.0.0.1",23);
}
如何將我自己的結構之一的實例聲明爲static?這個樣本顯然不能編譯,但它應該證明我的意圖。Rust靜態結構聲明
static SERVER: Server<'static> = Server::new();
fn main() {
SERVER.start("127.0.0.1",23);
}
您不能在全局內調用任何函數;他們必須嚴格文字。通常你可以做類似於結構文字的東西,儘管隱私規則可能會阻止你這樣做,在那裏有私人領域,而你沒有在同一個模塊中定義它。
所以,如果你有這樣的事情:
struct Server<'a> {
foo: &'a str,
bar: uint,
}
你可以這樣寫:
const SERVER: Server<'static> = Server {
foo: "yay!",
bar: 0,
};
...那是你在一個真正的static
或const
聲明得到最好的。但是,有一些解決方法可以實現這種功能,例如lazy-static,其中您的Server::new()
是完全合法。
請注意常見問題條目:[主要之前或之後沒有生命](http://doc.rust-lang.org/complement-design-faq.html#there-is-no-life-before-or -after-main-%28no靜電-構建函數/ dtors%29)。 – 2014-11-06 07:33:12