Как стать автором
Обновить

Комментарии 13

Скорее "Rust с 0 до 0% для JavaScript разработчиков".

Я даже немного в минус ушёл

Кстати, книга есть и на русском: https://doc.rust-lang.ru/book/

Статья сводится к тому, что JS и Rust не похожи, в расте много принципиально других вещей, поэтому почитайте книгу )

Да, я ещё бы порекомендовал вот этот цикл задач, они привязаны к учебнику и на практике позволяют то, что только что прочитано применить - https://github.com/rust-lang/rustlings

println!("{:?}", my_variable);

Можно вот так: println!("{my_variable:?}");


Вам надо будет добавить их вручную (вместо использования такой команды, как yarn add)

Можно использовать cargo add (установив cargo-edit).

Тот самый коммент, который полезней всей статьи

точка с запятой (;) не обязательна в последней строке функции. В данном случае это сокращение для возврата этой строки

"Возврат строки" - как-то странно звучит. Точка с запятой меняет поведение. Она ставится после инструкций (statement) и не ставится после выражений (expression). Выражения возвращают значение, а инструкции - нет. "abc" - выражение, let a = "abc"; - инструкция. Поэтому, "abc" в расте равноценно return "abc". Точка с запятой подавляет возвращение значения, поэтому если написать "abc";, то значение выражения "abc" возвращено не будет.

Кстати, получается, что точка с запятой после return является исключением, ведь она не мешает возвращению значения.

Кстати, получается, что точка с запятой после return является исключением, ведь она не мешает возвращению значения.

Исключением тут является не точка с запятой после return, а сам оператор return (кстати, он не один такой). Проще всего это увидеть на следующем примере:


fn foo() -> i32 {
    let bar = {
        return 5;
    };
}

Здесь оператор return возвращает значение из функции foo, но это ничуть не мешает переменной bar принять тип ()

Не совсем:
Тип выражения { return 5; } -- ! (он же never-type).

Другое дело, что never-type, формально, приводим к любому типу и, действительно,

fn foo() -> i32 {
    let bar: () = { return 1; };
}

также скомпилируется.

Наверно самый бесполезный (даже вредный) способ учить Rust )

JavaScript-разработчику его знания не помогут практически ничем в освоении Rust-а.

Ну нет. Преувеличиваете. Если знаешь один язык, то следующие изучаются проще.

Другое дело, что статья не помогает решать трудности возникающие с переходом. Думаю, что привыкший скриптухе сразу столкнется с вопросами типа как положить в вектор объекты разных типов и работать с ними, как замыкание положить в объект, как добавить поле в объект после создания... ну подобное, что может заставить переписать первые программы несколько раз чтобы они лишь заработали.

Вот теперь я перестал понимать Rust. Вроде, начали проклёвываться зёрна, и я даже чуть-чуть освоился с арифметрикой на трейтах, но вот после вашего введения Rust выглядит странным, загадочным и непонятным.

Это все банальщина, давай про заимствования и времена их жизни.

Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации

Истории