abi_stable/library/
development_utils.rs
1use std::{
4 io,
5 path::{Path, PathBuf},
6};
7
8use crate::library::RootModule;
9
10pub fn compute_library_path<M: RootModule>(target_path: &Path) -> io::Result<PathBuf> {
15 let debug_dir = target_path.join("debug/");
16 let release_dir = target_path.join("release/");
17
18 let debug_path = M::get_library_path(&debug_dir);
19 let release_path = M::get_library_path(&release_dir);
20
21 Ok(match (debug_path.exists(), release_path.exists()) {
22 (false, false) => debug_dir,
23 (true, false) => debug_dir,
24 (false, true) => release_dir,
25 (true, true) => {
26 if debug_path.metadata()?.modified()? < release_path.metadata()?.modified()? {
27 release_dir
28 } else {
29 debug_dir
30 }
31 }
32 })
33}