Comments 31
В утиной типизации достаточно реализовать методы, которые вызывает пользователь объекта. Явное указание того, что реализуется интерфейс, ничем практически не отличается от наследования соответствующего абстрактного класса в плюсах.
с выводом в консоль ну вот прям все здорово, интересно как поможет утиная типизация написать быстрое преобразование Фурье над массивом, например.
или какой-нибудь простенький PID регулятор, например.
Другой огромной частью экосистемы Rust является его документация. Я изучил язык исключительно по официальной документации и никогда не чувствовал необходимости искать учебные материалы в других местах.
Что прекрасно соответствует
Данная статья это перевод с английского с некоторыми адаптациями.
Для англоязычных действительно характерна фиксация на «как» путём отбрасывания «почему». Поэтому действительно очень хорошей документации показалось достаточно.
Спасибо за статью!
В интернетах я слышал два тезиса. Что программы на Rust хорошо защищены и что часто хакеры пишут свои программы на Rust. Кто что скажет по этому поводу и как такое сочетание возможно одновременно?
Утиная подтипизация не требует явного статического указания типа. Rust traits представляют из себя пример структурной подтипизации. В других языках программирования структурная подтипизация часто реализована в виде интерфейсов, в Python - через typing.Protocol и т.д.
Начал изучать "этот ваш" Rust. Пока впечатление не очень. Безопасность при использовании памяти, это, конечно, хорошо, но некоторые моменты контринтуитивны. Короче, почти "еще один C++".
И есть несколько вопросов, на которые пока не видно приемлемых ответов.
Во-первых, есть ли в экосистеме готовое решение с приличной кроссплатформенной IDE, чтобы устаеовил - и все заработало? Я отсутствие подобного как-нибудь переживу, а большинство - не очень
Во-вторых, есть ли приличные, опять же, кроссплатформенные средства для разработки GUI хотя бы уровня QT Creator?
И еще смущает сильная завязанность экосистемы на единственный ресурс (по крайней мере это сквозит из всех щелей в любом учебнике по языку. Менеддер пакетов - это, конечно, хорошо, но хотелось бы и запасные варианты иметь.
Для сравнения, тот же С++ с кучей библиотек вместе с QT Creator и основными библиотеками доступен в любом дистрибутиве линукс. Для винды тоже есть где скачать. Сами библиотеки как правило доступны из нескольких источников. В случае чего всегда есть возможность построить без особенного напряжения достаточную инфраструктуру для разработки почти любого пртдукта.
Любой редактор с поддержкой языковых серверов + rust-analyzer. VS Code, например.
Из приличных есть Gtk-rs, из кросс-платформенных -- Tauri, Slint.
Есть, например, lib.rs как альтернатива crates.io
Спасибо.
С первым пунктом буду пробовать.
Со вторым, получается, все пока не так хорошо, как хотелось бы. Проглядел предложенное, средств визуальной разработки интерфейса (как у упомянутого мной qtcreator, например) вроде не обнаружил.
Третье уже радует.
У Gtk есть минимум два визуальных редактора: традиционный Glade и новый Cambalache. Также появился новый язык разметки -- Blueprint. Это всё, конечно же, не rust-специфично и доступно для всех языков.
Есть RustRover от JetBrains, если вы привыкли к Idea/VS. А так lsp есть под все - vscode, neovim, emacs
Не сильно обольщайтесь. То, что даёт языковый сервер и tree sitter действительно есть везде где поддерживаются языковый сервер и tree sitter, но это не делает текстовый редактор IDE в том смысле, в каком Visual Studio - IDE, а VS Code - нет.
Если честно - то нет. Разрабатывать GUI в принципе - можно. Есть привязки к библиотекам типа GTK, Qt, SDL. Есть кросс-платформенные игровые движки типа Bevy. Есть средства разработки GUI поддерживающие Rust в том числе, типа Slint. Есть средства разработки GUI использующие Rust наряду с, типа Tauri - аналога Electron. Есть даже возможность прицепиться к Flutter...
Non-issue. Менеджер пакетов не обязателен и все, а может и не все но почти, пакеты так или иначе лежат на GitHub. Что crates.io, что lib.rs - не ресурсы от которых может быть зависимость, это индексы ресурсов. Если кажется что cargo с её add - это ресурс от которого тоже может быть зависимость, то это не так, это стандарт понятия "пакет" и их два быть не может. В некотором смысле есть зависимость от Git и GitHub, но против выпиливания из состава человечества запасных вариантов не бывает.
Где Вы видите снобизм? Примените эмпатию и попытайтесь понять о чём человек спрашивает. Вроде как очевидно - ему бы идеально подошёл Delphi, только для Rust. И все Emacs просто не о том.
Я в Емаксе с lsp+gopls намного продуктивнее чем мои коллеги c Goland. Плохому танцору как известно всегда что-то мешает.
А если найду? придумаю задачу где будет наоборот? Кто-нибудь заводил речь о Вас?
Если бы человеку хоть немного подходил Emacs, то он бы сразу hx --health и ничего бы не спрашивал...
А что есть например в Visual Studio или WebStorm, и чего нет в VSCode?
А что есть
Можно найти продолжительные дискуссии по этому поводу. Я их не запоминаю ибо не фанат ни того ни другого.
То, что это единая штука, не требующая ставить отдельно среду разработки, компилятор и языковый сервер. Visual studio можно поставить и сразу получить минимальный комплект разработки для нескольких языков. Причем все будет уже должным образом связано и настроено.
То же можно сказать и про QT, который дает ту же возможность в своем установщике (но, правда, только для одного языка).
Именно потому многие предпочитают таки требующую лицензию студию свободно распространяемому VSCode.
А с VSCode ставятся компиляторы всех поддерживаемых языков и языковые серверы из коробки?
Языковые серверы ставятся из маркетплейса прямо внутри редактора одной кнопкой. Компиляторы - зависит от языка и от того, как в нём принято устанавливать компилятор. В случае того же TypeScript компилятор отдельный для какждого проекта.
Для Rust в любом случае лучше ставить компилятор через rustup.
Rust: за пределами синтаксиса. Обретение просветления в неожиданных местах