rust - 如何访问通过 `cargo install` 安装的 Rust/Cargo 项目中包含的 Assets ?

标签 rust rust-cargo

我有一个项目,其中包含一些相关 Assets (Lua 脚本),我需要在运行时找到这些 Assets 。这可能意味着两件事:

  • 在开发过程中(例如cargo run),我想找到它相对于源
  • 当通过 cargo install 安装时, Assets 也应该安装在某个地方,并且可执行文件的安装版本应该找到安装的 Assets 。

我知道可以使用类似 include_str!() 的选项将文本文件编译成二进制文件,但在这种情况下我不想这样做。

据我所知,cargo install doesn't have any support for installing anything other than the executable at the moment ,这是第一个问题,尽管我不介意使用包装器安装脚本来提供帮助。

最佳答案

根据您想要的结构,您可以尝试混合使用 env::current_dir获取当前目录,如果找不到任何内容,您可以尝试使用可执行路径并从那里加载内容。你用 env::current_exe 得到它.


我看到了困难,即 cargo install 将二进制文件复制到 .cargo/bin 中,这意味着额外的资源保留在源文件夹位于 .cargo/registry/src/...

在这种情况下,我 agree with @ljedrzinclude!似乎是唯一的方法。

关于rust - 如何访问通过 `cargo install` 安装的 Rust/Cargo 项目中包含的 Assets ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39888534/

相关文章:

rust - 如何使用 Assembly (NASM) 引导加载程序编译 Rust 内核

windows - 无法安装 cargo-binutils 库 : Failed to find tool. 是否安装了 `gcc.exe`?

performance - 为什么在遍历数组时 `while` 的性能据说比 `for` 慢?

rust - 如何在Rust中以最惯用的方式将Option <T>转换为Option <&T>?

rust - 您如何正确实现 View 矩阵?

vector - 不重新借用可变切片时在 for 循环中移动错误

multithreading - 如何将对堆栈变量的引用传递给线程?

rust - 错误 : failed to parse manifest caused by: no `package` section found

rust - 是否可以停用 cargo 中的文件锁定?

rust - 为什么一个 Cargo 包只能有一个库目标?