【发布时间】:2016-10-11 21:04:40
【问题描述】:
我正在深入研究 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(())
}
导致
src/bin/main.rs:86:12: 86:13 错误:无法推断出关于
_的足够类型信息;需要类型注释或泛型参数绑定 [E0282]
不幸的是,那个箱子里的文档经常使用unwrap,这对我没有帮助。在 Haskell 中,我会做类似 println!("{:?}", i :: i32) 的事情,但我不知道如何在 Rust 中做到这一点。我尝试了各种方法来投射row.take,但我没有任何运气。如果有更惯用的方式,我很乐意看到我可以用多种方式来构建这段代码。
【问题讨论】:
-
请注意,这只是一个问题,因为您使用的是
println!,它接受的值范围很广。如果您要在某些限制类型的上下文中使用i值(例如通过将其传递给函数),则可以推断出类型。
标签: rust