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

Несколько типов в функции в Rust

У одной функции может быть два независимых имени типа. Каждый параметр связан со своим именем, и они не обязаны совпадать. Так удобно собирать кортеж или структуру из частей разного вида одной записью.

Запишем функцию, которая возвращает пару из двух аргументов:

fn pair<A, B>(a: A, b: B) -> (A, B) { (a, b) } fn main() { let both = pair(1, String::from("go")); println!("{} {}", both.0, both.1); }

Тот же шаблон подойдет, когда оба значения числовые, но типы полей кортежа все равно могут различаться:

fn pair<A, B>(a: A, b: B) -> (A, B) { (a, b) } fn main() { let both = pair(2i64, 3i32); println!("{} {}", both.0, both.1); }

Даны значения:

let left = 5; let right = String::from("ru");

Соберите кортеж через обобщенную функцию пары из left и right и выведите оба поля.

Дано число:

let code: i32 = 9;

Верните пару из code и строки "tag" одной функцией с двумя именами типа и выведите второй элемент.

Скажите, чем два имени типа в одной функции отличаются от одного имени на оба параметра.

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