include_set/
include_set.rs

1use std::path::{Path, PathBuf};
2
3use working_dir::Dir;
4
5fn find_include<P: AsRef<Path>, Q: AsRef<Path>>(include_set: &[Dir<P>], file: Q) -> Option<PathBuf> {
6    let file = file.as_ref();
7
8    for include_dir in include_set {
9        if include_dir.contains(file) {
10            return Some(include_dir / file)
11        }
12    }
13    return None
14}
15
16
17fn main() {
18    let file = "stdio.h";
19    let include_set = [
20        "/usr/local/include",
21        "/usr/target/include",
22        "/usr/include"
23    ].map(Dir);
24
25    if let Some(path) = find_include(&include_set, file) {
26
27        println!("{file} found at {path:?}")
28    } else {
29        println!("Unable to find {file} in {include_set:?}")
30    }
31}