Crate tailcall[−][src]
Tailcall is a library that adds safe, zero-cost tail recursion to stable Rust.
Eventually, it will be superseded by the become
keyword.
Usage
To guarantee that recursive calls a function will reuse the same stack frame,
annotate it with the tailcall
attribute.
use tailcall::tailcall; fn factorial(input: u64) -> u64 { #[tailcall] fn factorial_inner(accumulator: u64, input: u64) -> u64 { if input > 0 { factorial_inner(accumulator * input, input - 1) } else { accumulator } } factorial_inner(1, input) }
Recursive calls which are not in tail form will result in a compile-time error.
ⓘ
use tailcall::tailcall; #[tailcall] fn factorial(input: u64) -> u64 { if input > 0 { input * factorial(input - 1) } else { 1 } }
Modules
trampoline | This module provides a simple, zero-cost trampoline. It is designed to be used by the
|
Attribute Macros
tailcall | Transforms a function definition so that all recursive calls within the body are guaranteed to use a single stack frame (via tail recursion). |