Rust 会公开调用堆栈深度吗?
Does Rust expose call stack depth?
背景信息:我有一个函数可以通过其他函数直接和间接地调用自身,并且希望在程序 运行 超出调用堆栈时以一种廉价的方式优雅地失败。我可以手动计算调用次数,但我想要一种更优雅、更健壮的方法来实现这一点。
是否可以使用稳定的 Rust 确定当前调用堆栈深度?
我能找到的唯一选项是:
- 遵循ASM中的栈,但要求不稳定,不可移植
- 使用 GNU libc 扩展(回溯)。但是,backtrace 太浪费了,也不标准。
stacker crate 似乎提供了您寻求的功能:
- 保证可用堆栈数量的函数
- 一个查询剩余堆栈数量的函数,你可以用它在程序实际堆栈溢出之前退出
该库支持 Linux、Windows 和 macOS 目标。
背景信息:我有一个函数可以通过其他函数直接和间接地调用自身,并且希望在程序 运行 超出调用堆栈时以一种廉价的方式优雅地失败。我可以手动计算调用次数,但我想要一种更优雅、更健壮的方法来实现这一点。
是否可以使用稳定的 Rust 确定当前调用堆栈深度?
我能找到的唯一选项是:
- 遵循ASM中的栈,但要求不稳定,不可移植
- 使用 GNU libc 扩展(回溯)。但是,backtrace 太浪费了,也不标准。
stacker crate 似乎提供了您寻求的功能:
- 保证可用堆栈数量的函数
- 一个查询剩余堆栈数量的函数,你可以用它在程序实际堆栈溢出之前退出
该库支持 Linux、Windows 和 macOS 目标。