Ich grabe in Rust, speziell in die anmutige Behandlung von Fehlern, aber ich habe ein paar Probleme mit der Typinferenz.Typ Anmerkung in einem Muster übereinstimmen in Rust?
extern crate mysql;
use mysql as my;
fn main() {
my_test();
}
fn my_test() -> Result<(), my::Error> {
let pool = try!(my::Pool::new(""));
let res = try!(pool.prep_exec("select 1 as count",()));
for rows in res {
let row: my::Row = try!(rows);
match row.take("count") {
None =>(),
Some(i) => println!("{:?}", i),
};
}
Ok(())
}
was dazu führt,
src/bin/main.rs:86:12: 86:13 error: unable to infer enough type information about
_
; type annotations or generic parameter binding required [E0282]
Leider sind die Dokumente in dieser Kiste verwenden unwrap
viel, das hilft mir nicht. In Haskell würde ich so etwas wie println!("{:?}", i :: i32)
machen, aber ich kann nicht herausfinden, wie es in Rust geht. Ich habe verschiedene Möglichkeiten ausprobiert row.take
zu werfen, aber ich habe kein Glück gehabt. Ich würde gerne eine Vielzahl von Möglichkeiten sehen, wie ich diesen Code strukturiert haben könnte, wenn es eine idiomatische Art und Weise gibt, darüber zu handeln.
Beachten Sie, dass dies nur ein Problem ist, da Sie 'println!' Verwenden, das eine große Bandbreite an Werten verwendet. Wenn Sie den Wert "i" in einem Kontext verwenden, der den Typ einschränkt (z. B. durch Übergabe an eine Funktion), kann der Typ abgeleitet werden. – Shepmaster