Rust 会暴露调用堆栈深度吗?

Doe*_*Doe 6 recursion callstack rust

背景信息:我有一个函数可以直接或通过其他函数间接调用自身,并且希望有一种廉价的方法可以在程序耗尽调用堆栈时优雅地失败。我可以手动计算呼叫数,但我想要一种更优雅、更强大的方式来实现这一点。

是否可以使用稳定的 Rust 确定当前的调用堆栈深度?

我能找到的唯一选择是:

  1. 遵循ASM中的堆栈,但它要求不稳定且不可移植。
  2. 使用 GNU libc 扩展(回溯)。然而,回溯太浪费而且也不标准。

mca*_*ton 4

堆垛机箱似乎提供了您寻求的功能:

  • 保证可用堆栈数量的函数
  • 查询剩余堆栈量的函数,您可以使用它在程序实际堆栈溢出之前进行保释

该库支持 Linux、Windows 和 macOS 目标。