Взял рабочую функцию вычисления факториала
fn fact(n:usize) -> usize
{
let mut out:usize = 1;
for a in 1..(n+1)
{
out *= a;
}
и попытался сделать ее обобщенной
fn fact(n:T) -> T
{
let mut out:T = 1;
for a in 1..(n+1)
{
out *= a;
}
return out;
}
Получил ошибку несовместимости типов.
В одном месте наткнулся на указание, что проблемы с обобщенными функциями можно обойти при помощин трейтов (trait), но пока не могу понять каким образом.