pub type CallFn<F, T> = <F as TypeFn<T>>::Output;
Expand description
Calls the F
type-level function with T
as its argument.
For F:
InjTypeFn<T>
, it’s better to
use CallInjFn
instead of this type alias.
§Example
use typewit::CallFn;
use core::ops::Mul;
assert_eq!(mul(3u8, &5u8), 15u8);
fn mul<L, R>(l: L, r: R) -> CallFn<MulOutput<L>, R>
where
L: core::ops::Mul<R>
{
l * r
}
// Declares `struct MulOutput<Lhs>`,
// a type-level function from `Rhs` to the return type of `Lhs * Rhs`.
typewit::type_fn! {
struct MulOutput<Lhs>;
impl<Rhs> Rhs => <Lhs as Mul<Rhs>>::Output
where Lhs: core::ops::Mul<Rhs>
}