在文档中找到这个信息实际上相当困难,这甚至可能是一个由两部分组成的问题:
{integer}
和{float}
是否是某种特定原始类型的语言别名?类型名称用花括号括起来在编译/语法错误消息中表示什么意思?
例如:
错误:没有在当前作用域找到名为
pow
的方法,类型为{integer}
在文档中找到这个信息实际上相当困难,这甚至可能是一个由两部分组成的问题:
{integer}
和{float}
是否是某种特定原始类型的语言别名?
类型名称用花括号括起来在编译/语法错误消息中表示什么意思?
例如:
错误:没有在当前作用域找到名为
pow
的方法,类型为{integer}
{integer}
在错误信息中是一个占位符,可以代表任何整数类型({i,u}{8,16,32,64,128}
)。(来源)
Rust中的整数字面量根据其使用进行类型推导。例如,在以下代码中,123
在第一次出现时类型为u8
,在第二次出现时类型为u64
:
let a: u8 = 123;
let a: u64 = 123;
{integer}
通常在编译器无法确定数值具体类型时,用于表示任何整数类型的错误信息。
{integer}
也可以强制转换为类型 usize
。 - Nayuki{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
引起的编译错误会在类型推断之前抛出。
换句话说,在编译到类型推断阶段之前,整数或浮点数如果没有具体类型指定,将被认为是一个 {integer}
或 {float}
(例如基于函数应用),或分配默认类型,即整数的i32
和浮点数的f64
,编译错误将以此为参照。