Como converter tipos genéricos que eu sei serem inteiros?
Quero verificar os códigos de retorno das APIs C de maneira genérica e o resultado deve estar livre de tipos C, comolibc::c_int
. Existem maneiras de escrever uma função como
fn check<S: PartialOrd + std::num::Zero, T> (x: S) -> Option<T> {
if std::num::zero::<S>() <= x { Some(x as T) }
else { None }
}
quando tenho certeza queS
eT
são tipos integrais para todos os usos decheck()
? O compilador rejeita meu código reclamandoerror: non-scalar cast: `S` as `T`