Вывод типов

Движок вывода типов весьма умён. Он делает куда больше, чем просто смотрит на тип r-value при инициализации. Он также смотрит, как используется значение после инициализации, чтобы вывести его тип. Вот расширенный пример вывода типов:

fn main() {

// Благодаря выведению типов компилятор знает, `elem` имеет тип - u8.

let elem = 5u8;

// Создадим пустой вектор (расширяемый массив).

let mut vec = Vec::new();

// В данном месте компилятор не знает точный тип `vec`, он лишь знает,

// что это вектор чего-то там (`Vec<_>`).

// Добавляем `elem` в вектор.

vec.push(elem);

// Ага! Теперь компилятор знает, что `vec` - это вектор, который хранит в себе тип `u8`

// (`Vec`)

// ЗАДАНИЕ ^ Попробуйте закомментировать строку `vec.push(elem)`

println!("{:?}", vec);

}

הההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההה

XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

Не потребовалось никакой аннотации типов переменных, компилятор счастлив, как и программист!

Загрузка...