此上下文中static的含义是什么?
fn foo<F: Human + 'static>(param: F) {}
fn main() {
let kate = Kate { age: 30 };
foo(kate);
}
我理解标记global_variable
static
类似于静态意味着,即。在c#中,变量的空间分配在内存的一个单独的段中,存在于整个程序的执行中。
static global_variable: i32 = 5;
但我不明白给出'静态约束意味着什么。 kate
是否以某种方式得到提升,她的生命延长了,所以它现在也适用于整个程序的执行?
或者它只是意味着一旦foo
停止使用它就会被解除分配?
答案 0 :(得分:10)
设置T: 'a
之类的约束意味着类型T
的所有生命周期参数必须满足生命周期约束'a
(因此,必须比它长)。
例如,如果我有这个结构:
struct Kate<'a, 'b> {
address: &'a str,
lastname: &'b str
}
仅当Kate<'a, 'b>
和 F: Human + 'static
时, 'a == 'static
才会满足约束'b == 'static
。
但是,没有任何生命周期参数的结构将始终满足任何生命周期约束。
总而言之,像F: 'static
这样的约束意味着:
F
没有生命周期参数F
的所有生命周期参数均为'static