Здравствуйте, Shmj, Вы писали:
S>Вот Rust гордится своим Option для всего — мол по умолчанию можно не опасаться, что будет NRE или попытка обратиться через nullptr.
Это ведь семантика
S>А ведь вместо Option — гораздо удобнее и понятнее символ ? а так же сопутствующие ему — ! ?? и пр. — что уже фактически стало стандартом — используется и в C# и в Dart совершенно одинаково и интуитивно можно сказать понятно.
А это синтаксис, он действительно не очень
S>Ведь Rust отстает, получается.
Да, с точки зрения синтаксических возможностей раст довольно бедный язык. ? оператор есть, а ?? нет. И ! нет, надо везде писать .unwrap().
Нет оператора is как C#, предлагается через громоздкий if let делать.
А еще нет перегрузок функций, дефолтных параметров, нет функций с переменным числом параметров.
Операции с указателями крайне неудобны, так как операция разыменовывания имеет меньший приоритет и нет оператора -> как в C. Вроде как сделано для того, чтобы люди меньше писали unsafe, но некоторые вещи сложно эффективно выразить в safe.
Это все чисто синтаксические недостатки.
Есть еще и проблемы в семантике: работа с Error, пробрасывание ошибок и стектрейсы для error, отсутствие наследования (которое в каждом втором фреймфорке переизобретено). Отсутствие стандартного метода работы с метаданными и вообще отсутствие высокоуровневых концепций в стандартной библиотеке, async прибитый к конкретному движку.
Вроде есть макросы для борьбы со всеми неудобствами, но макросы зачастую создают проблем больше, чем решают.