Ответы пользователя по тегу Rust
  • Насколько хороша такая политика обновления библиотеки?

    Постепенно я дополняю её патчами.

    Непонятно какую схему вы планируете для разных unstable-версий. major.new_minor.patch-unstable.1, major.new_minor.patch-unstable.2. Кстати, рекомендую выбрать какой-то более привычный prerelease-идентификатор вместо unstable, например alpha и beta.

    Также рекомендую подглядеть схему версионирования у какого-нибудь популярного крейта, например actix-web. Они используют предрелизные версии перед мажорными релизами.

    Тут кстати встаёт вопрос, а так ли вам нужны предрелизы для ПАТЧ-версий библиотеки? Выглядит как чрезмерно детальное версионирование. Обычно когда публикуется патч-апдейт, и в нём обнаруживается баг, то просто выпускается новая версия с фиксом и со следующим patch-числом (т.е. была 2.5.2, потом вышла 2.5.3 с багом, для фикса которого выпустили 2.5.4).

    Возможно я неправильно вас понял, и вы предполагали использовать предрелизы для новых минорных и мажорных версий - тогда это более разумное решение.

    Собственно предрелизы на то и меньше релизов при операциях сравнения, что для этого и придуманы. Т.е. например:
    1.2.5 < 1.3.0-alpha.1 < 1.3.0-alpha.2 < 1.3.0-beta.1 < 1.3.0

    Чтобы пользоваться предрелизами правильно и потом не кусать локти из-за неудачно выбранной схемы, почитайте внимательно правила сравнения в спеке semver для предрелизов и подсмотрите в популярные пакеты как кто делает. Лично мы используем схему c alpha/beta плюс через точку номер предрелизного билда.

    Схема именования предрелизов должна быть устроена так, чтобы решать задачу "приближения" к релизной версии. Если обычные 3.5.7 нужно читать как "3-я версия API + 5-й набор фичей для этого API + 7-я версия патчей для этого набора фичей", то 4.0.0-beta.6 нужно читать как «вроде бы уже почти 4.0.0, но ещё непонятно сколько ещё косяков надо перепрыгнуть, чтобы добраться до 4.0.0. На глаз вроде бы уже немного осталось (beta), но это уже 6-я бета, а до неё ещё несколько альф было, поглядим сколько ещё багов нам заведут»
    Ответ написан
    2 комментария
  • Где можно безопасно хранить токены в десктопе?

    Мы в своём Electron-приложении для хранения паролей используем keytar. Он хранит пароли в наиболее подходящем для каждой ОС месте:
    A native Node module to get, add, replace, and delete passwords in system's keychain. On macOS the passwords are managed by the Keychain, on Linux they are managed by the Secret Service API/libsecret, and on Windows they are managed by Credential Vault.

    Пользователи счастливы, мы особых проблем не имеем с этим.

    Т.к. вы пишете на Расте, я бы предложил вам keytar-rs, но этот крейт выглядит не очень популярным (пока), поэтому используйте осторожно.
    Ответ написан
    2 комментария
  • Почему скомпилированный "Hello World", на Rust занимает на диске 10 Мегабайт?

    Почему, если я напишу проект с использованием какой-то внешней библиотеки, то она будет скачана и скомпилирована, а затем в другом проекте мне понадобится таже библиотека, и в итоге она будет опять скачена и скомпилина, и в итоге на моем диске валяются проекты по 5+ GB.

    Т.е. вы хотите, чтобы Rust/Cargo тем или иным образом интегрировались с системным пакетным менеджером? Тогда предлагаю почитать вот эту статью: https://habr.com/ru/post/433052/
    Ответ написан
    Комментировать
  • Почему появилась мода на новый синтаксис?

    Действительно, не такой уж он новый. Паскаль уже вспомнили, вот добавлю еще: https://en.wikipedia.org/wiki/Standard_ML

    Синтаксис переменная : тип стал популярнее потому, что стали популярнее языки НЕ из семейства Си (C/C++/C#/Java), в которых отличается не только семантика, но и синтаксис.

    Кстати, я не уверен даже, какой синтаксис появился раньше)
    Ответ написан
    Комментировать
  • Какой должна быть ORM?

    > И меня несколько удивило отсутствие каких-либо наработок в этой области в Rust (хотя бы начальных версий).
    1) язык в релизе несколько месяцев, чего вы хотите-то;
    2) не во всех языках ORM смотрится естественно. В C++ нормальной ORM нет до сих пор, есть некоторые библиотеки на базе Qt, но де-факто стандарта нет просто потому, что в языке недостаточно силен уровень метаданных. Но в этом нет проблемы просто потому, что на плюсах редко пишутся приложения, где нужен такой уровень;
    3) А может повсеместное использование ORM это только удел web?
    Я бы сказал что ORM это удел бизнес-приложений и языков высокого уровня (Java/.NET/Ruby). Другое дело, что веб-приложения в 99% случаев пишут на всяких asp.net и Рубях, а не на плюсах, поэтому и такая корреляция. Внутрикорпоративных десктопных приложений по прежнему достаточно, и как раз там ORM тоже любят.

    > Подскажите, на сколько высокоуровневой должна быть ORM?
    Это вам решать, ORM-ки разные бывают, кто-то где-то используют потолще, кто-то - потоньше. Лично я особого смысла в тонких не вижу для большинства задач, поэтому на мой вкус в ORM обязательно должны быть следующие вещи:
    1) martinfowler.com/eaaCatalog/identityMap.html
    2) martinfowler.com/eaaCatalog/unitOfWork.html
    3) martinfowler.com/eaaCatalog/inheritanceMappers.html

    Вообще, озакомьтесь для начала со всеми Object-Relational паттернами: martinfowler.com/eaaCatalog, а то наверняка напишете парк велосипедов.
    Ответ написан
    2 комментария