3

Rust 允许以这种方式格式化打印变量:

fn main(){
  let r:f64 = rand::random();
  println!("{}",r);
}

但这不起作用:

fn main(){
  println!("{}",rand::random());
}

它显示了这个错误:

   |
31 |   println!("{}",rand::random());
   |                 ^^^^^^^^^^^^ cannot infer type for type parameter `T` declared on the function `random`

是否可以直接使用函数返回值println!

4

2 回答 2

3

Rust 不知道rand::random应该是什么类型,因此您可以使用turbofish提供类型提示:

println!("{}", rand::random::<f64>());
于 2020-05-22T00:01:21.100 回答
1

turbofish迫使::<f64>println!("{}", rand::random::<f64>());通用部分rand::random成为f64。在这种情况下,泛型参数与返回类型匹配 - 但对于其他函数,情况不一定如此。

在这种情况下,可以告诉编译器您想要的函数的返回类型,而不是泛型参数。在这种情况下,如果您使用的是 nightly 编译器,您可以使用“类型归属”。

println!("{}", rand::random(): f64);
于 2020-05-22T04:33:24.947 回答