ринадлежит к определенному типу данных, который говорит о том, что это за данные, и таким образом язык понимает, как с ними работать. Мы рассмотрим два подмножества типов данных: скалярные и составные.
Имейте в виду, что Rust — это статически типизированный язык, а это означает, что во время компиляции он должен знать типы всех переменных. Компилятор обычно логически выводит тип, нужный нам, основываясь на значении и на том, как мы его используем. В тех случаях, когда может быть более одного типа, например, когда мы конвертировали строковый тип в числовой с помощью метода parse в разделе «Сравнение загаданного числа с секретным числом», мы должны добавить аннотацию типа:
let guess: u32 = "42".parse().expect("Не является числом!");
Если не добавить аннотацию типа, то компилятор выдаст ошибку, которая приведена ниже. Она означает, что компилятору требуется больше информации, чтобы узнать, какой тип мы хотим использовать6:
error[E0282]: type annotations needed
--> src/main.rs:2:9
|
2 | let guess = "42".parse().expect("Не является числом!");
| ^^^^^
| |
| cannot infer type for `_`
| consider giving `guess` a type
Вы увидите разные аннотации типов для разных т