Rust 如何将一个人的一生限制在锈迹斑斑的封闭环境中?

Rust 如何将一个人的一生限制在锈迹斑斑的封闭环境中?,rust,lifetime,Rust,Lifetime,我调用的闭包中包含折叠函数。虽然我打算在这个函数中不使用任何东西来生活在闭包环境之外,但我收到了一个错误,即我正在删除一个仍然被借用的值 我已经尝试从一些_closure中删除所有的生命周期说明符,因为我发现编译器在计算生命周期方面比我自己聪明得多,但我也发现在这方面没有成功(编译器总是要求使用生命周期说明符,直到显示的示例) 我想在这里做的是指定一个限制在函数内部闭包长度的生存期,而不是函数本身。但我有一种感觉,我所认为的问题实际上可能不是我的问题,我对闭包中的生命周期的理解存在一些差距 我已

我调用的闭包中包含折叠函数。虽然我打算在这个
函数中不使用任何东西来生活在闭包环境之外,但我收到了一个错误,即我正在删除一个仍然被借用的值

我已经尝试从
一些_closure
中删除所有的生命周期说明符,因为我发现编译器在计算生命周期方面比我自己聪明得多,但我也发现在这方面没有成功(编译器总是要求使用生命周期说明符,直到显示的示例)

我想在这里做的是指定一个限制在函数内部闭包长度的生存期,而不是函数本身。但我有一种感觉,我所认为的问题实际上可能不是我的问题,我对闭包中的生命周期的理解存在一些差距

我已经尽可能地减少了这个例子:

struct-HoldStr-Vec>{
|切片{
让mut temp=vec![];
从_切片(切片)临时克隆_;
临时雇员
}
}
fn克隆\u切片\u借用\u到\u向量\u相同向量>{
//为了举例,与上一个函数相同,但可以假设它做了其他事情
}
fn some_closure=my_vec.iter().collect();
let called_closures:[Box src/lib.rs:61:51
|
##| fn一些_闭包您需要的闭包类型:

fn clone_slice_borrows_into_vec() -> impl for<'a> Fn(&[&'a HoldStr]) -> Vec<&'a HoldStr<'a>> {
...
那么这基本上总是一个错误。这让调用方请求一个任意的生存期,函数承诺凭空创建这个生存期的引用,这只有在它从一些全局存储中获取静态引用时才可能,在这种情况下,它应该只返回
&'static Foo

fn clone_slice_borrows_into_vec() -> impl for<'a> Fn(&[&'a HoldStr]) -> Vec<&'a HoldStr<'a>> {
...
fn foo<'a>() -> &'a Foo