在 Rust 中关闭存储在 Map 中的文件

Close File stored in Map in Rust

我将打开的文件存储在地图中:HashMap<u32, File>。有时会调用函数 read_to_filewrite_to_file。他们从地图中获取文件并进行相应的处理。为了避免对同一个文件的写入和读取冲突,我需要关闭文件。我该怎么做?

根据 Rust documentation std::fs::File 是:

A reference to an open file on the filesystem.

如果您将 File 存储在地图中,那么根据定义,它们是开放的。当变量被删除(超出范围)时,它们会自动关闭。

相反,您可以考虑在地图中存储一个 Path,然后按需打开文件。如果出于某种原因需要存储打开的文件,则可以将它们包装在 Arc<Mutex> 中(如果您的应用程序是单线程的,则可以将它们包装在 `Rc 中),以防止同时访问。