如何读取库包中的文本文件



我正在尝试读取位于我的库箱中的一些文本文件。文件结构如下:

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文件,你必须将其与可执行文件一起发送,或者将其内容嵌入库中(可能是字符串数组(。

最新更新