我正试图在我的铁 rust 紫杉应用程序中读取一个名为Book.txt的文件.我正在使用Trunk的copy-file为Book.txt提供服务,以便可以从http://localhost:8080/Book.txt.访问它 try 使用std::FS读取文件不起作用(出现错误Could not open file: Error { kind: Unsupported, message: "operation not supported on this platform" }),但我想知道是否有其他方法可以读取此文件. 我也试图使用wasm32-unknown-emscripten的目标,但似乎没有任何作用.如果可能的话,我真的希望避免使用客户端-服务器体系 struct ,即我将文件放在服务器上并在那里读取,因为我希望最终将所有这些都托管在GitHub页面上.

非常感谢您的帮助.

谢谢!

推荐答案

  • std::fs访问本地文件系统.对于Web应用程序,本地平台是浏览器.浏览器中没有文件系统,因此没有要访问的内容,因此它失败,并显示您显示的错误消息.
    • Emscripten实际上是在浏览器中模拟本地内存中的文件系统,应该有某种方法为该文件系统预先设定文件种子.但我不知道如何在Rust中做到这一点,而且总的来说,它不会比下一个选项有多大好处:
  • 对您来说,获得文件内容的最简单方法是使用std::include_str!.但这将包括编译输出中的内容,如果Book.txt很大并且并不总是需要,或者如果您想在编译完成后更改它,那么这可能不是您想要的内容.
  • 由于您已经通过http为Book.txt提供服务,您应该能够通过XHR请求它,既可以使用web_sys::Window::fetch_with_request_and_init这样的"原始"API,也可以通过一些方便的工具,比如reqwest.(如果这不起作用,请确保您没有遇到CORS限制.)

Rust相关问答推荐

为什么幻影数据不能自动推断?

如何装箱生命周期相关联的两个对象?

如何使用 list 在Rust for Windows中编译?

为什么std repeat trait绑定在impl块和关联函数之间?

integer cast as pointer是什么意思

如何正确重新排列代码以绕过铁 rust 借入判断器?

如何使用RefCell::JOYMOMTborrow 对 struct 不同字段的可变引用

为什么这个变量不需要是可变的?

为什么我需要 to_string 函数的参考?

如何在 `connect_activate()` 之外创建一个 `glib::MainContext::channel()` 并将其传入?

如何在 Rust 中打印 let-else 语句中的错误?

可以在旋转循环中调用try_recv()吗?

在发布中包含 Rust DLL

打印 `format_args!` 时borrow 时临时值丢失

在 Rust 中,将可变引用传递给函数的机制是什么?

将 `&T` 转换为新类型 `&N`

没有分号的返回表达式的性能是否比使用返回更好?在Rust ?

基于名称是否存在的条件编译

Rust:为什么在 struct 中borrow 引用会borrow 整个 struct?

来自外部函数的future 内部可变引用