Wie werden generische Typen umgewandelt, von denen ich weiß, dass sie ganze Zahlen sind?
Ich möchte die Rückkehrcodes von C-APIs generisch überprüfen und das Ergebnis muss frei von C-Typen wie @ seilibc::c_int
. Gibt es Möglichkeiten, eine Funktion wie @ zu schreibe
fn check<S: PartialOrd + std::num::Zero, T> (x: S) -> Option<T> {
if std::num::zero::<S>() <= x { Some(x as T) }
else { None }
}
wenn ich sicher bin, dassS
undT
sind ganzzahlige Typen für alle Verwendungen voncheck()
? Der Compiler lehnt meinen Code ab und beschwert sich übererror: non-scalar cast: `S` as `T`