在比较大型的项目中写相对路径时,需要注意:相对路径的基准通常是当前执行二进制文件的工作目录(current working directory),而不是源文件所在的目录或此刻正在运行的文件的目录。
为了确定程序的当前工作目录,可以在代码中输出或打印当前工作目录,如下所示:
let current_dir = std::env::current_dir().expect("Failed to get current directory");
eprintln!("Current directory: {}", current_dir.display());
比如我在 A 文件中调用一个函数位于 B 文件,而需要处理的文件的相对路径要在 B 文件中写明,此时写相对路径的基准可能既不是 A 文件也不是 B 文件,可能是 A 文件的父级之类的,就需要查看程序的当前工作目录,然后以此为根据写相对路径。