【问题标题】:Rust File Tree move occurs because `subtree` has type `trees::Tree<PathBuf>`, which does not implement the `Copy` trait发生 Rust 文件树移动是因为 `subtree` 的类型为 `trees::Tree<PathBuf>`,它没有实现 `Copy` 特征
【发布时间】:2022-06-16 20:42:46
【问题描述】:

我正在尝试制作一个简单的 tauri 程序,其中我有一个包含所选目录的所有文件和子文件的文件树。 我在 Rust 方面没有太多经验,并且遇到了所有权问题。

代码

use std::fs;
use std::path::PathBuf;
use trees::Tree;

//FileTree
//https://docs.rs/crate/file_tree/0.1.1
fn main() {
    let path = PathBuf::from("MyPath...");
    let tree = Tree::new(path);
    
    build_tree(tree);
}

fn build_tree( mut tree:Tree<PathBuf>){
    
    let path = tree.front().unwrap().data();
    for entry in fs::read_dir(path).unwrap() {
        let entry = entry.unwrap();
        let subpath = entry.path();
        if subpath.is_dir() {
            let subtree = Tree::new(subpath);
            build_tree(subtree);
            tree.push_back(subtree);
        } else {
            tree.push_back(Tree::new(subpath));
        }
    }
    tree;
}

这是我到目前为止想到的,但在这条线上: tree.push_back(子树);

我收到以下错误

use of moved value: `subtree`
value used here after moverustcE0382
main.rs(22, 24): value moved here
main.rs(21, 17): move occurs because `subtree` has type `trees::Tree<PathBuf>`, which does not implement the `Copy` trait

我尝试了什么

我试图使子树可变,但它也没有工作,因为它说 mut 不是必需的

我也已经尝试过使用 Rust 的 Filetree crate,但它并不是我想要的。

有人有其他想法如何在 Rust 或 Tauri 中实现文件树?

【问题讨论】:

  • 请从cargo check 发布完整错误,而不是从您的IDE。

标签: rust ownership filetree tauri


猜你喜欢
  • 1970-01-01
  • 2021-07-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-09-19
  • 2016-05-29
  • 2023-03-29
  • 2019-12-08
相关资源
最近更新 更多