rust 错误:借来的价值不够长

问题描述 投票:0回答:0

我正在尝试传递对异步函数的引用。我得到错误:

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`

关于如何解决这个问题的任何想法。错误是什么意思?

rust
© www.soinside.com 2019 - 2024. All rights reserved.