Следите за новинками
в нашем Telegram канале. Жми, чтобы подписаться:)
⊗rsSpGnIf 19 of 288 menu
◀ ▶

Вывод типа в обобщении в Rust

Компилятор сам подставляет тип по аргументу, если его не написали в вызове. Достаточно передать значение, и вид параметра берут из этого значения. Явную запись типа в вызове можно добавить, когда нужно зафиксировать вид вручную.

Возьмем функцию, которая возвращает аргумент без изменений, и посмотрим на вывод типа:

fn identity<T>(value: T) -> T { value } fn main() { let n = identity(4); let m = identity::<i32>(7); println!("{} {}", n, m); }

Оба результата имеют тип i32: в первом случае его вывели из литерала, во втором задали явно после имени функции:

fn identity<T>(value: T) -> T { value } fn main() { let text = identity(String::from("hi")); println!("{}", text); }

Дано число:

let a: i32 = 3;

Передайте a в обобщенную функцию тождества и выведите число, не указывая тип в вызове вручную.

Дано число:

let b: i32 = 12;

Повторите вызов, но задайте i32 явно после имени функции и сравните результат с предыдущей задачей.

Скажите, когда удобнее оставить вывод компилятору, а когда указать тип в вызове самому.

← →
↑
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить