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

时间:2017-05-16 13:58:57

标签: stack rust os-agnostic

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

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

2 个答案:

答案 0 :(得分:3)

这不是语言功能,它是一种操作系统功能。在* nix系统上,您将使用ulimit之类的工具。其他系统可能使用其他工具:

答案 1 :(得分:2)

经过一些研究后我得出结论,没有通用的方法来实现我所追求的目标,但使用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();
}