Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/rust/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Recursion Rust暴露调用堆栈深度吗?_Recursion_Rust_Callstack - Fatal编程技术网

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

Recursion Rust暴露调用堆栈深度吗?,recursion,rust,callstack,Recursion,Rust,Callstack,背景信息:我有一个函数,它可以通过其他函数直接或间接地调用自己,如果程序的调用堆栈用完,我想用一种便宜的方法优雅地失败。我可以手动计算通话次数,但我希望有一种更优雅、更稳健的方法来实现这一点 是否可以使用stable Rust确定当前调用堆栈深度 我能找到的唯一选择是: 遵循ASM中的堆栈,但它要求不稳定且不可移植 使用GNULIBC扩展(回溯)。然而,回溯太浪费,也不标准 板条箱似乎提供了您想要的功能: 保证可用堆栈数量的函数 一个查询剩余堆栈量的函数,可以在程序实际堆栈溢出之前使用该函数进

背景信息:我有一个函数,它可以通过其他函数直接或间接地调用自己,如果程序的调用堆栈用完,我想用一种便宜的方法优雅地失败。我可以手动计算通话次数,但我希望有一种更优雅、更稳健的方法来实现这一点

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

我能找到的唯一选择是:

  • 遵循ASM中的堆栈,但它要求不稳定且不可移植
  • 使用GNULIBC扩展(回溯)。然而,回溯太浪费,也不标准 板条箱似乎提供了您想要的功能:

    • 保证可用堆栈数量的函数
    • 一个查询剩余堆栈量的函数,可以在程序实际堆栈溢出之前使用该函数进行缓冲

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

    考虑到github上唯一一个开放问题的严重性,我对板条箱的健康状况有一些担忧,但它似乎提供了我所需要的。希望这个功能像glibc一样被合并到stdlib中。根据这一点,它不会被移动到标准库中。然而,这表明这个板条箱有一个美好的未来。我当然希望如此,因为这个问题对于可靠的系统软件是多么关键。谢谢你的信息。