我正在尝试传递对异步函数的引用。我得到错误:
borrowed value does not live long engough
。我无法解决这个问题。有什么想法吗?
在 cargo.toml 中我启用了以下功能。主要方法用
#[tokio::main]
注解
futures = { version= "0.3" , features = ["thread-pool"] }
功能:
async fn copy_folder_to_s3(
&self,
src_local_folder: &str,
cloud_prefix: &str,
) -> Result<(), Error> {
let files = utils::list_files_recursive(src_local_folder).unwrap();
for file in files {
let src_abs_path = format!("{:?}", file.canonicalize().unwrap());
let src_prefix = src_abs_path.split(src_local_folder).nth(1).unwrap();
let cloud_url = format!("{}/{}/{:?}", cloud_prefix, src_prefix, file.file_name());
let future = self.copy_to_s3(&src_abs_path, &cloud_url);
self.pool.spawn_ok(future);
}
return Ok(());
}
}
给出以下错误
error[E0597]: `src_abs_path` does not live long enough
--> src/aws_utils.rs:119:42
|
119 | let future = self.copy_to_s3(&src_abs_path, &cloud_url);
| ^^^^^^^^^^^^^ borrowed value does not live long enough
error[E0521]: borrowed data escapes outside of associated function
--> src/aws_utils.rs:120:13
|
107 | &self,
| -----
| |
| `self` is a reference that is only valid in the associated function body
| let's call the lifetime of this reference `'1`
...
120 | self.pool.spawn_ok(future);
| ^^^^^^^^^^^^^^^^^^^^^^^^^^
| |
| `self` escapes the associated function body here
| argument requires that `'1` must outlive `'static`
关于如何解决这个问题的任何想法。错误是什么意思?