为了在处理大量文件系统路径时尽可能降低开销,我想避免为每个路径分配内存.有没有办法清理和重用PathBuf?
从我在文档中找到的内容来看,PathBuf当通过PathBuf::push(至少在POSIX系统上)处理绝对路径时,重用a 是可能的,但是PathBuf在处理相对路径时我还没有找到重用a的方法.
有没有办法以跨平台的方式做到这一点,还是我被迫以平台特定的方式处理这些路径?
我正在处理一个程序宏,该宏需要一个位置来在运行它的系统上存储状态。cargo clean运行时应清除状态。
过去,我假设target目录是正确的位置。但是,我的假设可能不正确,因为:
rustc和冲突cargo。为了避免这些问题,我一直在尝试确定一种正确定位位置的方法,但是并没有成功。我找到的最接近的是OUT_DIRCargo为构建脚本设置的环境变量,不幸的是,它没有为程序宏运行设置。
请注意,此问题不是“ 是否可以在Rust的程序宏中存储状态?”的重复项。。这个问题通常涵盖程序宏状态,而这个问题是关于在包装箱的文件结构中确定合适的位置。
我正在开发一个程序宏,它做了很多工作,可以大大减慢编译速度。所做的工作不会影响函数的语义;也就是说,如果给定相同的参数集,则返回值不会根据是否应用宏而改变。
为了使编辑-比较-测试循环更快,我想根据与包的编译方式相关的条件使宏成为无操作。我希望能够特别确定两个属性:
Cargo公开构建脚本的优化级别(通过环境变量OPT_LEVEL和PROFILE),但不公开模式(构建、文档等)。然而,这些信息似乎都没有暴露给程序宏。
使用 gcc 时,我可以通过运行获得 gcc 认为是我主机的三元组gcc -dumpmachine。在我当前的系统上,这给了我x86_64-linux-gnu.
我怎样才能稳定rustc打印我的主机三重?(x86_64-unknown-linux-gnu在这种情况下)
rustc的文档似乎不包含除了--print和之外的任何相关内容--version。两者似乎都没有产生主机目标三元组。
澄清:到目前为止,每晚给出了两个答案,我想强调这个问题专门针对稳定的 rustc编译器。
在 Linux 和其他 POSIX 系统上,程序可以在另一个用户(即euid)的身份下执行。通常,您会打电话geteuid给朋友来可靠地确定进程的当前身份。然而,我无法找到一种仅使用 rust 的标准库来确定这些身份的可靠方法。
我发现唯一接近的是std::os::unix::MetadataExt。
目前是否可以euid使用 Rust 的标准库来确定进程(和其他 ID)?我缺少什么功能或特征吗?