我正在尝试读取位于我的库箱中的一些文本文件。文件结构如下:
workspace
|
|-- MyBin
| |-- src
| |-- main.rs
|
`-- MyLib
|-- src
|-- lib.rs
`-- text.txt
好吧,MyBin有MyLib作为它的依赖项之一。在lib.rs中,我使用std::fs::read_to_string
函数来访问text.txt的内容。但是当我在MyBin上运行cargo run
时,相对路径现在从MyBin的src文件夹而不是MyLib中开始。
即使从另一个机箱调用read_to_string
,也可以读取text.txt吗?
使用库时,您需要明白,在将代码链接到正在运行的可执行文件之前,代码从未真正运行过。
read_to_string
不会在编译时将文件内容嵌入到lib/可执行文件中,它只是"告诉"程序需要在运行时获取文件。
read_to_string
采用文件的相对路径或绝对路径。我认为在你的情况下,你使用了一条相对路径。相对路径总是在运行时相对于可执行文件的运行位置进行解释。
正如你在帖子中的评论所建议的那样,如果你在运行程序时需要text.txt
文件,你必须将其与可执行文件一起发送,或者将其内容嵌入库中(可能是字符串数组(。