“静态作为函数约束”是什么意思?
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
在此上下文中静态的含义是什么?
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