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

时间:2017-09-02 07:19:38

标签: recursion rust callstack

背景信息:我有一个通过其他函数直接或间接调用自身的函数,如果程序用完调用堆栈,我想要一种廉价的方法来优雅地失败。我可以手动计算呼叫,但我想要一种更优雅和更健壮的方式来实现这一目标。

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

我能找到的唯一选择是:

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

1 个答案:

答案 0 :(得分:2)

stacker crate似乎提供了您所寻求的功能:

  • 保证可用堆栈数量的功能
  • 查询剩余堆栈数量的函数,可以在程序实际堆栈溢出之前用于保释

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