- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
Another question 展示了两种可以在另一个表达式中强制返回 rand::random
类型的方法。这两种方式是:使用类型归属
println!("{}", rand::random(): f64);
或者使用turbofish操作符
println!("{}", rand::<f64>random() );
这些告诉编译器不同的事情,在这种情况下它们的结果是一样的,但一般情况下是不同的。第一个是说返回类型是 f64
并让编译器从中推断出用于类型参数的类型,而第二个是显式指定泛型类型参数。
在这种情况下,差异很小,但在某些情况下
I) 如果没有 turbofish 或类型归属之一,编译器将无法推断出类型,并且
II)类型归属形式比涡轮鱼形式简洁得多?
最佳答案
如果一个函数有多个泛型类型,并且除了输出类型之外都可以从输入中推导出来,那么你仍然需要使用 _
作为涡轮鱼符号中推导的类型参数,但不是类型归属:
fn add_and_convert<T, U, V>(u: U, v: V) -> T
where U: Add<V>, T: From<<U as Add<V>>::Output> {
T::from(u + v)
}
println!("{}", add_and_convert(1u8, 3u8): i32);
println!("{}", add_and_convert::<i32, _, _>(1u8, 3u8));
// println!("{}", add_and_convert::<i32>(1u8, 3u8)); // won't compile
关于rust - 是否存在显式类型归属比使用 turbofish 运算符更简洁的情况?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61948034/
我正在使用 mysql crate ,特别是 query_first method .运行以下代码段完美编译。 let foo : mysql::Result> = tx.query_first("S
Another question 展示了两种可以在另一个表达式中强制返回 rand::random 类型的方法。这两种方式是:使用类型归属 println!("{}", rand::random():
有时我有一个变量,我想用变量的类型调用“turbofish”函数。例如: fn main() { let arr = [0u8; 4]; println!("size_of arr:
这个问题在这里已经有了答案: What is a concise way to inform the compiler of the specifc type with multiple imple
我是一名优秀的程序员,十分优秀!