Удивительное в языке Rust
Я решил по ходу изучения составить список наиболее элегантных решений языка Rust, которые не встречал в других ЯП.
1. Pattern Matching with Arrays: destructuring in match statements (match это аналог switch):
let arr: [i32; 3];
match arr {
[0, ..] => println!("Starts with zero"),
[_, 2, _] => println!("Has 2 in the middle"),
[a, b, c] => println!("All elements: {}, {}, {}", a, b, c),
}
Представьте, сколько строк кода понадобилось бы писать на проверку комбинаций значений массива. Тут же всё умещается в 1 строку, любые комбинации! Гениально
2. в Rust-е нет наследования (классов), есть только полиморфизм (через интерфейсы: traits).
Помним, что Rust сфокусирован на безопасной работе с памятью. Так вот отказываясь от "витиеватости наследования", Rust исключает владение состоянием (state) объекта - разными наследниками одновременно (огонь! Это вообще философское и вовсе не про программирование!). А также забота о времени жизни объектов (что тоже про корректную работу с памятью): при наследовании время может быть неопределенным.
ℹ️ Продолжение: https://telegra.ph/Udivitelnoe-v-yazyke-Rust-11-02
#rust
Я решил по ходу изучения составить список наиболее элегантных решений языка Rust, которые не встречал в других ЯП.
1. Pattern Matching with Arrays: destructuring in match statements (match это аналог switch):
let arr: [i32; 3];
match arr {
[0, ..] => println!("Starts with zero"),
[_, 2, _] => println!("Has 2 in the middle"),
[a, b, c] => println!("All elements: {}, {}, {}", a, b, c),
}
Представьте, сколько строк кода понадобилось бы писать на проверку комбинаций значений массива. Тут же всё умещается в 1 строку, любые комбинации! Гениально
2. в Rust-е нет наследования (классов), есть только полиморфизм (через интерфейсы: traits).
Помним, что Rust сфокусирован на безопасной работе с памятью. Так вот отказываясь от "витиеватости наследования", Rust исключает владение состоянием (state) объекта - разными наследниками одновременно (огонь! Это вообще философское и вовсе не про программирование!). А также забота о времени жизни объектов (что тоже про корректную работу с памятью): при наследовании время может быть неопределенным.
ℹ️ Продолжение: https://telegra.ph/Udivitelnoe-v-yazyke-Rust-11-02
#rust