小编Ten*_*ken的帖子

清除和重用Rust PathBuf的跨平台方法是什么?

为了在处理大量文件系统路径时尽可能降低开销,我想避免为每个路径分配内存.有没有办法清理和重用PathBuf

从我在文档中找到的内容来看,PathBuf当通过PathBuf::push(至少在POSIX系统上)处理绝对路径时,重用a 是可能的,但是PathBuf在处理相对路径时我还没有找到重用a的方法.

有没有办法以跨平台的方式做到这一点,还是我被迫以平台特定的方式处理这些路径?

rust

6
推荐指数
1
解决办法
200
查看次数

什么地方适合存储程序宏构件,以便通过“货物清理”进行清理?

我正在处理一个程序宏,该宏需要一个位置来在运行它的系统上存储状态。cargo clean运行时应清除状态。

过去,我假设target目录是正确的位置。但是,我的假设可能不正确,因为:

  1. 我的文件和目录可能与rustc和冲突cargo
  2. 目标目录的位置可以更改为默认值。

为了避免这些问题,我一直在尝试确定一种正确定位位置的方法,但是并没有成功。我找到的最接近的是OUT_DIRCargo为构建脚本设置的环境变量,不幸的是,它没有为程序宏运行设置。

请注意,此问题不是“ 是否可以在Rust的程序宏中存储状态?”的重复项。这个问题通常涵盖程序宏状态,而这个问题是关于在包装箱的文件结构中确定合适的位置。

rust rust-cargo rust-proc-macros

5
推荐指数
1
解决办法
146
查看次数

如何在过程宏中确定编译属性?

我正在开发一个程序宏,它做了很多工作,可以大大减慢编译速度。所做的工作不会影响函数的语义;也就是说,如果给定相同的参数集,则返回值不会根据是否应用宏而改变。

为了使编辑-比较-测试循环更快,我想根据与包的编译方式相关的条件使宏成为无操作。我希望能够特别确定两个属性:

  1. 为什么执行宏:构建/运行、文档、测试
  2. 是否为优化构建而执行宏。

Cargo公开构建脚本的优化级别(通过环境变量OPT_LEVELPROFILE),但不公开模式(构建、文档等)。然而,这些信息似乎都没有暴露给程序宏。

rust rust-cargo rust-proc-macros

5
推荐指数
0
解决办法
249
查看次数

如何查询主机三元组的 rustc?

使用 gcc 时,我可以通过运行获得 gcc 认为是我主机的三元组gcc -dumpmachine。在我当前的系统上,这给了我x86_64-linux-gnu.

我怎样才能稳定rustc打印我的主机三重?(x86_64-unknown-linux-gnu在这种情况下)

rustc的文档似乎不包含除了--print和之外的任何相关内容--version。两者似乎都没有产生主机目标三元组。

澄清:到目前为止,每晚给出了两个答案,我想强调这个问题专门针对稳定的 rustc编译器。

cross-compiling rust triplet

5
推荐指数
1
解决办法
418
查看次数

Rust 中如何确定进程的有效用户 ID?

在 Linux 和其他 POSIX 系统上,程序可以在另一个用户(即euid)的身份下执行。通常,您会打电话geteuid给朋友来可靠地确定进程的当前身份。然而,我无法找到一种仅使用 rust 的标准库来确定这些身份的可靠方法。

我发现唯一接近的是std::os::unix::MetadataExt

目前是否可以euid使用 Rust 的标准库来确定进程(和其他 ID)?我缺少什么功能或特征吗?

linux permissions rust

4
推荐指数
1
解决办法
4940
查看次数