在文档中很难找到它。这甚至可能是一个两部分问题:
{integer}
和{float}
是某种特定基本类型的语言别名吗?
将类型名称括在大括号中是什么意思 编译/语法错误消息?
示例:
错误:当前没有为类型
pow
找到名为{integer}
的方法 范围
答案 0 :(得分:8)
{integer}
是任何整数类型({i,u}{8,16,32,64,128}
)的占位符。 (Source)
Rust中的整数文字是根据其用法推断的类型。例如,在以下代码中,123
的类型在第一个实例中为u8
,在第二个实例中为u64
:
let a: u8 = 123;
let a: u64 = 123;
当编译器没有找到具体类型的值时, {integer}
用于表示错误消息中的任何整数类型。
答案 1 :(得分:7)
{integer}
是一个整数值,其具体类型未指定,尚未被编译器推断;以下代码:
fn main() {
let x = 1;
let () = x;
}
将导致以下错误:
error[E0308]: mismatched types
--> <anon>:3:9
|
3 | let () = x;
| ^^ expected integral variable, found ()
|
= note: expected type `{integer}`
= note: found type `()`
浮点数会发生同样的情况:
fn main() {
let x = 1.0;
let () = x;
}
error[E0308]: mismatched types
--> <anon>:3:9
|
3 | let () = x;
| ^^ expected floating-point variable, found ()
|
= note: expected type `{float}`
= note: found type `()`
因为在类型推断发生之前抛出了由无效赋值let () = x
引起的编译错误。
换句话说,直到编译到达类型推断阶段,其中将识别没有指定具体类型的整数或浮点数(例如,基于函数应用程序)或分配默认类型,i32
表示整数和f64
对于浮点数,编译错误会将其称为{integer}
或{float}
。