Ich möchte eine Liste von einem beliebigen numerischen Typ in eine Liste von Schwimmern umwandeln. Der folgende Code nicht kompilieren:Von Merkmal funktioniert nur auf Werte, aber ich habe Referenzen
#[cfg(test)]
mod tests {
#[test]
fn test_int_to_float() {
use super::int_to_float;
assert_eq!(vec![0.0, 1.0, 2.0], int_to_float(&[0, 1, 2]));
}
}
pub fn int_to_float<I>(xs: I) -> Vec<f64>
where
I: IntoIterator,
f64: From<I::Item>,
{
xs.into_iter().map(f64::from).collect()
}
Die Fehlermeldung ist
error[E0277]: the trait bound `f64: std::convert::From<&{integer}>` is not satisfied
--> src/main.rs:6:41
|
6 | assert_eq!(vec![0.0, 1.0, 2.0], int_to_float(&[0, 1, 2]));
| ^^^^^^^^^^^^ the trait `std::convert::From<&{integer}>` is not implemented for `f64`
|
= help: the following implementations were found:
<f64 as std::convert::From<i8>>
<f64 as std::convert::From<i16>>
<f64 as std::convert::From<f32>>
<f64 as std::convert::From<u16>>
and 3 others
= note: required by `int_to_float`
Ich verstehe, dass I::Item
ist ein Verweis auf ein i32
(&i32
), aber f64::from
ist nur für Werte umgesetzt. Wie bekomme ich das kompilieren?
Wir haben eine * Menge erhalten * von schlecht formatiert ist, übermäßig große Beiträge mit Fragen schwer zu folgen. Ich würde gerne erkennen, dass diese Frage keine von denen war und große Anstrengung zeigt! – Shepmaster