Ну всё, мы на работе начали писать на сабже и я пропал. Я понимаю, почему Rust считается самым любимым разработчиками языком уже который год.
То есть его главный гиммик про владение переменными и семь видов указателей (на самом деле в самом языке есть только три, а остальные 78 это часть стандартной библиотеки, но пустое). И мне нравится в общем это дело, тем более, что в прикладном коде я могу разок и склонировать строку вместо разбираться как лучше разложить указатели, чтобы компилятор был доволен.
Но на самом деле там дофига эргономики которой не хватает считай везде. Например, если в терминах джавы, статические методы могут быть частью интерфейса. Сначала это звучит странно, но на практике сильно помогает когда тебе нужно создать экземпляр типа внутри обобщённого кода. Например можно как-то так:
trait FromString {
fn from_string(string: &str) -> Self;
}
struct S {
x: u32,
y: u32,
}
impl FromString for S {
fn from_string(string: &str) -> Self {
let mut split = string.split("\t").map(|s| s.parse::<u32>().unwrap());
S {
x: split.next().unwrap_or(0),
y: split.next().unwrap_or(0),
}
}
}
fn parse_lines_to_list<SomeStruct: FromString>(multiline_string: &str) -> Vec<SomeStruct> {
let mut result = Vec::new();
for line in multiline_string.split('\n') {
result.push(SomeStruct::from_string(line))
}
result
}
Отдельно мило, что можно писать Self
имея в виду конкретный тип после всей реализации трейтов (интерфейсов) и подстановки дженериков. И я понимаю, что в компилируемом языке почти без наследования это считай бесплатно, но технически я не вижу причин в той же джаве такое сделать. То есть оно будет дороже, надо будет создавать синглтон на каждый класс, но котлин и скала уже так делают, а типосистеме от этого лучше не стало.
Но если отставить в сторонку фичи, лично мне, как человеку который уже понимает паттерн-матчинг например это очень интуитивный язык.
Как недостатки я скажу, что у меня заняло некоторое время вкурить в их модули, а про макросы даже их документация пишет, что они не очень и надо переделать.
Ещё ChatGPT пишет очень сносный раст. Я его заставляю мне тесты писать. Но если что, я пользуюсь четвёртым. Your mileage may vary.