“静态作为函数约束”是什么意思?

What is the meaning of 'static as a function constraint?

在此上下文中静态的含义是什么?

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

fn main() {
    let kate = Kate { age: 30 };
    foo(kate);
}

我理解标记 global_variable static 类似于静态的意思,即。在 c# 中,space 变量分配在单独的内存段中,在整个程序执行过程中都存在。

static global_variable: i32 = 5;

但是我不明白给'静态约束是什么意思。 kate 是否以某种方式得到提升,并且她的生命周期延长了,所以它现在也存在于整个程序的执行过程中?

或者它只是意味着一旦 foo 停止使用它就会被释放?

T: 'a这样的约束意味着T类型的所有生命周期参数必须满足生命周期约束'a(因此,必须比它长)。

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

struct Kate<'a, 'b> {
    address: &'a str,
    lastname: &'b str
}

Kate<'a, 'b> 仅当 'a == 'static 'b == 'static.

时才会满足约束条件 F: Human + 'static

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

总而言之,像 F: 'static 这样的约束意味着:

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