¿Cómo emitir tipos genéricos que sé que son enteros?
Quiero verificar los códigos de retorno de las API de C de forma genérica y el resultado debe estar libre de tipos de C comolibc::c_int
. ¿Hay alguna forma de escribir una función 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 }
}
cuando estoy seguro de queS
yT
son tipos integrales para todos los usos decheck()
? El compilador rechaza mi código quejándoseerror: non-scalar cast: `S` as `T`