From 0abe596d3788f107d1cbb02d46bdce11b1b1f90a Mon Sep 17 00:00:00 2001 From: Phodal Huang Date: Wed, 9 Sep 2020 12:38:15 +0800 Subject: [PATCH] feat: add get root dir from current dir --- benchmark/src/main.rs | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/benchmark/src/main.rs b/benchmark/src/main.rs index e7a11a9..c94d7ff 100644 --- a/benchmark/src/main.rs +++ b/benchmark/src/main.rs @@ -1,3 +1,24 @@ +use std::path::{Path, PathBuf}; +use std::env; +use std::ffi::OsStr; + fn main() { println!("Hello, world!"); + let target_dir = get_target_dir(); + let root_dir = get_top_dir(&*target_dir); + println!("{:?}", root_dir); +} + +// https://github.com/rust-lang/cargo/issues/2841 +fn get_target_dir() -> PathBuf { + let bin = env::current_exe().expect("exe path"); + let mut target_dir = PathBuf::from(bin.parent().expect("bin parent")); + while target_dir.file_name() != Some(OsStr::new("target")) { + target_dir.pop(); + } + target_dir +} + +fn get_top_dir<'a>(target_dir: &'a Path) -> &'a Path { + target_dir.parent().expect("target parent") } -- GitLab