Как приводить универсальные типы, которые, как я знаю, являются целыми числами?
Я хочу проверить коды возврата API C в общем виде, и результат должен быть свободен от типов C, таких какlibc::c_int
, Есть ли способы написать такую функцию, как
fn check<S: PartialOrd + std::num::Zero, T> (x: S) -> Option<T> {
if std::num::zero::<S>() <= x { Some(x as T) }
else { None }
}
когда я уверен, чтоS
а такжеT
являются интегральными типами для всех видов использованияcheck()
? Компилятор отклоняет мой код жаловатьсяerror: non-scalar cast: `S` as `T`