【发布时间】: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