# tuple-fn
[](https://crates.io/crates/tuple-fn)
[](https://docs.rs/tuple-fn)
[](https://github.com/EqualMa/tuple-fn/blob/main/LICENSE)
[](https://github.com/EqualMa/tuple-fn/stargazers)
This crate provides [`TupleFnOnce`], [`TupleFnMut`] and [`TupleFn`],
corresponding to [`FnOnce`], [`FnMut`] and [`Fn`].
[`TupleFnOnce`], [`TupleFnMut`] and [`TupleFn`] enables functions or closures
to be called with a tuple of arguments.
For example:
```rust
use tuple_fn::*;
fn add(a: i32, b: i32) -> i32 {
a + b
}
let sum = add.call_with_args_tuple((1, 2));
assert_eq!(sum, 3);
```
These three traits should be named as
`FnOnceCallWithArgsTupleExt`, `FnMutCallWithArgsTupleExt`, `FnCallWithArgsTupleExt`
by convention, because they are implemented for
all corresponding `FnOnce`, `FnMut`, `Fn` types and act like extension traits.
They are named as `TupleFn*` just for simplicity.