pub trait CheckedFactorial: Sized {
    // Required method
    fn checked_factorial(n: u64) -> Option<Self>;
}
Expand description

Computes the factorial of a u64, returning None if the result is too large to be represented.

Required Methods§

Object Safety§

This trait is not object safe.

Implementations on Foreign Types§

source§

impl CheckedFactorial for u8

source§

fn checked_factorial(n: u64) -> Option<u8>

Computes the factorial of a number.

If the input is too large, the function returns None.

$$ f(n) = \begin{cases} \operatorname{Some}(n!) & \text{if} \quad n! < 2^W, \\ \operatorname{None} & \text{if} \quad n! \geq 2^W, \end{cases} $$ where $W$ is Self::WIDTH.

$n! = O(\sqrt{n}(n/e)^n)$.

§Worst-case complexity

Constant time and additional memory.

§Examples

See here.

source§

impl CheckedFactorial for u16

source§

fn checked_factorial(n: u64) -> Option<u16>

Computes the factorial of a number.

If the input is too large, the function returns None.

$$ f(n) = \begin{cases} \operatorname{Some}(n!) & \text{if} \quad n! < 2^W, \\ \operatorname{None} & \text{if} \quad n! \geq 2^W, \end{cases} $$ where $W$ is Self::WIDTH.

$n! = O(\sqrt{n}(n/e)^n)$.

§Worst-case complexity

Constant time and additional memory.

§Examples

See here.

source§

impl CheckedFactorial for u32

source§

fn checked_factorial(n: u64) -> Option<u32>

Computes the factorial of a number.

If the input is too large, the function returns None.

$$ f(n) = \begin{cases} \operatorname{Some}(n!) & \text{if} \quad n! < 2^W, \\ \operatorname{None} & \text{if} \quad n! \geq 2^W, \end{cases} $$ where $W$ is Self::WIDTH.

$n! = O(\sqrt{n}(n/e)^n)$.

§Worst-case complexity

Constant time and additional memory.

§Examples

See here.

source§

impl CheckedFactorial for u64

source§

fn checked_factorial(n: u64) -> Option<u64>

Computes the factorial of a number.

If the input is too large, the function returns None.

$$ f(n) = \begin{cases} \operatorname{Some}(n!) & \text{if} \quad n! < 2^W, \\ \operatorname{None} & \text{if} \quad n! \geq 2^W, \end{cases} $$ where $W$ is Self::WIDTH.

$n! = O(\sqrt{n}(n/e)^n)$.

§Worst-case complexity

Constant time and additional memory.

§Examples

See here.

source§

impl CheckedFactorial for u128

source§

fn checked_factorial(n: u64) -> Option<u128>

Computes the factorial of a number.

If the input is too large, the function returns None.

$$ f(n) = \begin{cases} \operatorname{Some}(n!) & \text{if} \quad n! < 2^W, \\ \operatorname{None} & \text{if} \quad n! \geq 2^W, \end{cases} $$ where $W$ is Self::WIDTH.

$n! = O(\sqrt{n}(n/e)^n)$.

§Worst-case complexity

Constant time and additional memory.

§Examples

See here.

source§

impl CheckedFactorial for usize

source§

fn checked_factorial(n: u64) -> Option<usize>

Computes the factorial of a usize.

If the input is too large, the function returns None.

$$ f(n) = \begin{cases} \operatorname{Some}(n!) & \text{if} \quad n! < 2^W, \\ \operatorname{None} & \text{if} \quad n! \geq 2^W, \end{cases} $$ where $W$ is usize::WIDTH.

$n! = O(\sqrt{n}(n/e)^n)$.

§Worst-case complexity

Constant time and additional memory.

§Examples

See here.

Implementors§