Rust是否暴露调用堆栈深度?

问题描述:

背景信息:我有一个函数直接和间接地通过其他函数调用自己,并且想要一个便宜的方法在程序用完调用堆栈时优雅地失败。我可以手动计算通话次数,但我希望获得更优雅,更可靠的方法。Rust是否暴露调用堆栈深度?

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

我能找到的唯一选项是:

  1. 继ASM堆栈,但它需要不稳定,不便于携带。
  2. 使用GNU libc扩展(回溯)。但是,回溯太浪费,也不是标准。

stacker箱子似乎提供你所寻求的功能:

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

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

+0

考虑到github上唯一的开放问题的严重性,我对箱子的健康有一些担忧,但似乎确实提供了我需要的东西。希望这个功能被合并到像glibc这样的stdlib中。 – Doe

+1

根据[这个评论由板条箱的主人和主要rustc的开发者之一](https://github.com/rust-lang/rfcs/issues/1488#issuecomment-179334635)这不会被移动到标准图书馆。然而,[这个问题](https://github.com/rust-lang/rust/issues/41884)表明这个箱子前途不错。 – mcarton

+0

我当然希望如此给予这个问题对可靠的系统软件有多重要。谢谢(你的)信息。 – Doe