继续练练Rust和Vue3, 写个简易文件浏览器
用到Rust文件系统标准库, serde库Json序列化
前端Ant Design Vue 3.2
效果图
后端
main.rs代码
#![cfg_attr(
all(not(debug_assertions), target_os = "windows"),
windows_subsystem = "windows"
)]
use std::{
env, fs, io,
path::{
Path, PathBuf},
};
use serde::{
Deserialize, Serialize};
#[derive(Debug, Serialize, Deserialize)]
#[serde(tag = "value")]
enum FileType {
Dir,
File,
Symlink,
}
#[derive(Debug, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
struct FileEntry {
file_name: String,
file_path: String,
file_type: FileType,
file_size: u64,
}
fn _list_dir(path: &str) -> io::Result<Vec<FileEntry>> {
let mut p = PathBuf::from(path);
if p.is_relative() {
p = env::current_dir()?;
}
let mut entries = vec![FileEntry {
file_name: "..".to_string(),
file_path: p
.parent()
.unwrap_or(Path::new("/"))
.to_str()
.unwrap()
.