1eaa67f3cSLoGin use std::path::PathBuf; 2eaa67f3cSLoGin 3eaa67f3cSLoGin use anyhow::{anyhow, Result}; 4eaa67f3cSLoGin 5eaa67f3cSLoGin /// 检查目录是否存在 check_dir_exists<'a>(path: &'a PathBuf) -> Result<&'a PathBuf>6eaa67f3cSLoGinpub(super) fn check_dir_exists<'a>(path: &'a PathBuf) -> Result<&'a PathBuf> { 7eaa67f3cSLoGin if !path.exists() { 8eaa67f3cSLoGin return Err(anyhow!("Path '{}' not exists", path.display())); 9eaa67f3cSLoGin } 10eaa67f3cSLoGin if !path.is_dir() { 11eaa67f3cSLoGin return Err(anyhow!("Path '{}' is not a directory", path.display())); 12eaa67f3cSLoGin } 13eaa67f3cSLoGin 14eaa67f3cSLoGin return Ok(path); 15eaa67f3cSLoGin } 16eaa67f3cSLoGin 17eaa67f3cSLoGin /// 获取给定路径的绝对路径 abs_path(path: &PathBuf) -> PathBuf18eaa67f3cSLoGinpub fn abs_path(path: &PathBuf) -> PathBuf { 19eaa67f3cSLoGin if path.is_absolute() { 20eaa67f3cSLoGin path.to_path_buf() 21eaa67f3cSLoGin } else { 22*7a97f354SLoGin let origin = std::env::current_dir().unwrap().join(path); 23*7a97f354SLoGin origin.canonicalize().unwrap_or(origin) 24eaa67f3cSLoGin } 25eaa67f3cSLoGin } 26