我的目标是禁止Unix系统上的其他用户读取文件内容.

如何在Linux中设置文件权限,同时仍允许程序为Windows编译?

为Unix机器编译,I can do this:

use std::os::unix::fs::PermissionsExt;
fs::set_permissions("/path", fs::Permissions::from_mode(0o655)).unwrap();

但这不会在Windows上编译.我该如何解决这个问题?

推荐答案

处理这一问题的最简单方法可能是使用配置属性.

例如,您可能想要这样的东西:

#[cfg(target_family = "unix")]
fn set_permissions(path: &str) {
  use std::os::unix::fs::PermissionsExt;
  fs::set_permissions(path, fs::Permissions::from_mode(0o655)).unwrap();
}

#[cfg(not(target_family = "unix"))]
fn set_permissions(path: &str) {} 

更多示例here和参考文档here.

Rust相关问答推荐

亚性状上位性状上的 rust 病伴生型界限

在Rust中显式装箱受生存期限制的转换闭包

在决定使用std::Sync::Mutex还是使用Tokio::Sync::Mutex时,操作系统线程调度是考虑因素吗?

程序在频道RX上挂起

无法将 rust 蚀向量附加到另一个向量

为什么&;mut buf[0..buf.len()]会触发一个可变/不可变的borrow 错误?

将特征与具有生命周期的关联类型一起使用时的生命周期方差问题

RUST 中的读写器锁定模式

需要哪些编译器优化来优化此递归调用?

tokio::spawn 有和没有异步块

如何从borrow 的异步代码运行阻塞代码?

Rust中的一生语法有什么作用?

为什么不能在 Rust 中声明静态或常量 std::path::Path 对象?

bcrypt 有长度限制吗?

强制特征仅在 Rust 中的给定类型大小上实现

判断 is_ok 后重用结果

如何在 C++ 和 Rust 之间共享 pthread 同步原语?

在空表达式语句中移动的值

使用 `.` 将 T 转换为 &mut T?

Rust 内联 asm 中的向量寄存器:不能将 `Simd` 类型的值用于内联汇编