小编hon*_*ono的帖子

为什么'静态函数参数不会为整个程序生成一些东西?

我还是不明白的行为'static.在以下代码中,say_foo有效但say_bar不:

fn say_foo(_: &String) -> &str {
    "foo!"
}
fn say_bar(_: &'static String) -> &str {
    "bar!"
}

fn main() {
    let f = "f".to_string();
    let f2 = say_foo(&f); // ok:)
    println!("{}", f2);

    let b = "b".to_string();
    let b2 = say_bar(&b); // error:`b` does not live long enough
    println!("{}", b2);
}
Run Code Online (Sandbox Code Playgroud)

即使我传递reference给两个函数,传递变量的预期寿命在say_foo和之间也是不同的say_bar.

在关于生命周期的章节中,我发现这'static是一个让整个程序中存在生命的信号.

但这'static似乎并不像那样:b在b2(和f)之前发布.

什么'static …

rust

2
推荐指数
1
解决办法
174
查看次数

标签 统计

rust ×1