mirror of
https://github.com/eliasstepanik/imgui-rs.git
synced 2026-01-12 22:18:36 +00:00
31 lines
665 B
Rust
31 lines
665 B
Rust
use std::{
|
|
env,
|
|
path::{Path, PathBuf},
|
|
};
|
|
|
|
pub mod bindgen;
|
|
|
|
pub fn project_root() -> PathBuf {
|
|
Path::new(
|
|
&env::var("CARGO_MANIFEST_DIR").unwrap_or_else(|_| env!("CARGO_MANIFEST_DIR").to_owned()),
|
|
)
|
|
.ancestors()
|
|
.nth(1)
|
|
.unwrap()
|
|
.to_path_buf()
|
|
}
|
|
|
|
pub fn pushd(p: impl AsRef<Path>) -> std::io::Result<Pushd> {
|
|
let cwd = std::env::current_dir()?;
|
|
std::env::set_current_dir(p.as_ref())?;
|
|
Ok(Pushd(cwd))
|
|
}
|
|
pub struct Pushd(PathBuf);
|
|
impl Drop for Pushd {
|
|
fn drop(&mut self) {
|
|
if let Err(e) = std::env::set_current_dir(&self.0) {
|
|
eprintln!("warning: popd failed: {:?}", e);
|
|
}
|
|
}
|
|
}
|