如何增加 Rust 库可用的堆栈大小?

lje*_*drz 5 stack os-agnostic rust

我正在使用 lambda 演算,并且希望有更多的堆栈空间,以便能够构建和计算(非常)长的函数链。有没有办法增加板条箱的它,类似于增加递归限制(#![recursion_limit = "100"])?

该板条箱是一个库,我希望它能够执行堆栈密集型操作,无论目标操作系统如何。

lje*_*drz 10

经过一些研究,我得出的结论是,没有一种通用的方法可以实现我所追求的目标,但是使用std::thread::Builder我能够创建一个具有指定堆栈大小的额外线程,并在其中执行堆栈密集型操作:

fn huge_reduction() {
    let builder = thread::Builder::new()
                  .name("reductor".into())
                  .stack_size(32 * 1024 * 1024); // 32MB of stack space

    let handler = builder.spawn(|| {
        // stack-intensive operations
    }).unwrap();

    handler.join().unwrap();
}
Run Code Online (Sandbox Code Playgroud)