Rust file path to json

Hi I am writing a software using Rust. I am wanting to convert file path for example “~/Documents/code” to json something like:

{
    "name": "coverage",
    "type": "directory",
    "children": [
        {
            "name": "coverage-final.json",
            "type": "file"
        },
        {
            "name": "index.html",
            "type": "file"
        }
    ]
}

Here is the Rust code I found:

use walkdir::WalkDir;

fn main() {
    for e in WalkDir::new("./Documents").into_iter().filter_map(|e| e.ok()) {
        if e.metadata().unwrap().is_file() {
            println!("{}", e.path().display());
        }
    }
}

It prints out the paths:

./Cargo.lock
./.gitignore
./.git/config
./.git/HEAD
./.git/info/exclude
./.git/description
./.git/hooks/README.sample
./src/main.rs
...

This is the Javascript code that converts the array of paths to json that I found:

let paths = [
  "path1/subpath1/file111.doc",
  "path1/subpath1/file112.doc",
  "path1/subpath2/file121.doc",
  "path1/subpath2/file122.doc",
  "path2/subpath1/file211.doc",
  "path2/subpath1/file212.doc",
  "path2/subpath2/file221.doc",
  "path2/subpath2/file222.doc",
  "path2/additionalpath3/additionalpath1/file2311.doc"
];

let treePath = {};
paths.forEach(path => {
  let levels = path.split("/");
  let file = levels.pop();

  let prevLevel = treePath;
  let prevProp = levels.shift();

  levels.forEach(prop => {
    prevLevel[prevProp] = prevLevel[prevProp] || {};
    prevLevel = prevLevel[prevProp];
    prevProp = prop;
  });

  prevLevel[prevProp] = (prevLevel[prevProp] || []).concat([file]);
});

console.log(treePath);

I look forward to hearing from everyone! Thanks a lot!