'static as a function constraint是什么意思?

joj*_*ojo 6 lifetime rust

在这种情况下,静态是什么意思?

fn foo<F: Human + 'static>(param: F) {}

fn main() {
    let kate = Kate { age: 30 };
    foo(kate);
}
Run Code Online (Sandbox Code Playgroud)

我理解标记global_variable static类似于静态意味着即.在c#中,变量的空间分配在内存的单独段中,存在于程序的整个执行中.

static global_variable: i32 = 5;
Run Code Online (Sandbox Code Playgroud)

但是我不明白给出"静态约束"意味着什么.被kate莫名其妙地促进和她的一生延长,因此现在住的程序太的整体执行力?

或者它只是意味着一旦foo停止使用它就会被解除分配?

Lev*_*ans 10

设置约束T: 'a意味着该类型的所有生命周期参数T必须满足生命周期约束'a(因此,必须比它寿命更长).

例如,如果我有这个结构:

struct Kate<'a, 'b> {
    address: &'a str,
    lastname: &'b str
}
Run Code Online (Sandbox Code Playgroud)

Kate<'a, 'b>F: Human + 'static只有当'a == 'static 和时 才会满足约束'b == 'static.

但是,没有任何生命周期参数的结构将始终满足任何生命周期约束.

因此,作为总结,约束F: 'static意味着:

  • F 没有生命周期参数
  • 所有生命周期参数F都是'static