Как приводить универсальные типы, которые, как я знаю, являются целыми числами?

Я хочу проверить коды возврата 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`

Ответы на вопрос(1)

Ваш ответ на вопрос