← Timeline
Avatar
Eliyahu Duvidzon
Rust

Ну всё, мы на работе начали писать на сабже и я пропал. Я понимаю, почему 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.

😍1
To react or comment  View in Web Client