rust - 确定两个路径是否在同一个文件系统上
问题描述
给定两个Path
结构,我如何确定它们是否在同一个文件系统上?
我需要使用 移动文件std::fs::rename
,但我只想在源和目标位于同一文件系统上时执行重命名(否则,重命名必然会失败)。
在 bash 中,我会使用stat -c "%d" PATH
. Rust 有std::fs::metadata
,但它似乎没有返回 fsid。
解决方案
根据eggyal的评论:以下工作:
use std::os::unix::fs::MetadataExt;
// ...
let path1_meta = fs::metadata(path1).unwrap();
let path2_meta = fs::metadata(path2).unwrap();
if path1_meta.dev() != path2_meta.dev() {
panic!("Directories need to be on the same file system");
}
推荐阅读
- julia - 使用 NLopt 作为 JuMP 的求解器
- swift - 我正在尝试在用户键入时查询 firebase 数据库,但我不断收到此错误
- java - 将整数对象转换为双掷错误
- r - 矩阵乘法(逐行)
- python - DatetimeIndexResampler 对象返回的第一个 Timestamp 的模式是什么?
- html - querySelector 似乎没有在 ng-container 中找到元素
- algorithm - 天真的 Lomuto 在 Quicksort 中的分区可以处理重复项吗?
- continuous-integration - 在 CircleCI 构建的目录中找不到 package.json
- r - 如何阻止合并重叠多边形的强化
- javascript - 获取消息(按 ID)并进行编辑