Pull to refresh

Comments 4

Да, так оно и есть. Так как хотел показать EGUI, то для демонстрации я работал с f64 и не делал ни каких ухищрений с форматированием {:.10}.

Для тех, кто не догадался :)

Классический пример при работе с f64 `0.1 + 0.2 != 0.3 `

f64 опирается на  IEEE 754 и он никак не решает эти неточности. Точнее, тут особенность кроется еще в форматировании. Средство форматирования выводит число из середины диапазона.

Список альтернатив f64, которые мне известны и в которых фиксированная точность (если кто захочет написать свой калькулятор лишенный недостатков).

Как видите, мой список короткий, но если кто-то уже работает с rust для финансовых вычислений и у него есть полюбившийся create, то пожалуйста напишите в комментарии.

Ну да, а вместо <= можно было бы использовать (Alt+27).
Но цель же не "создать калькулятор", а "научиться самому и/или рассказать другим, как можно создавать приложения для десктопа и WASM используя Rust + Egui/Eframe, автоматически собирать проект с помощью GitHub Actions, и деплоить на GitHub Pages".
То есть с одной стороны — это что-то менее унылое и требующее большего вовлечения, чем типовые демки вида "жмёшь кнопку — число увеличивается на 1" или "To-Do List". А с другой — если вдруг понадобится добавлять новые функции (будь то возведение в степень или перевод между системами счисления), то это будет уже довольно рутинная работа.
Можно ли было сделать этот калькулятор лучше (не меняя имеющейся функциональности)? Да, конечно, причём это касается не только вот таких вот артефактов IEEE-754, но и общего оформления (например, сделать сам калькулятор на панели, которая будет плавать в центре окна/страницы, чтоб пустое место было со всех сторон равномерно). Нужно ли было делать лучше? Сомневаюсь, хотя автору, конечно, виднее.

Круто! Отличная статья. Как раз сейчас переписываю один свой проект с Python на Rust. Дошел до GUI и застрял. Перепробовал много фреймворков для Rust: Tauri, Leptos, Iced, GTK, Slint. Все не то. Либо слишком сложно и нет документации, либо слишком просто и нет нужного функционала (или я не понял, не нашел).

Прошло еще два года со времен написания статьи, а в GUI фреймворках для Rust таже ситуация: их много, многие unmantained, все достойные имеют версию 0.x.x и интерфейсы продолжают меняться, из за чего и так скудная документация становится еще более скудной (потому что половина уже не работает). Биндинги к Rust (как то GTK) довольно сложны в использовании. Rust слишком сильно отличается от других языков, и трудно и через пляски с бубном биндится, и так же трудно используется. В общем пока нет чего-то столь же целостного, удобного и документированного на Rust, как Qt на C++. Rust биндинги к Qt тоже не очень съедобны.

По итогам обзора существующих решений мне больше всего понравились Iced и Egui/Eframe. Последний значительно проще. Сейчас пробую его.

То что в статье пошли дальше чем просто обычный Counter - огромный респект! C hello_word то разобраться всегда просто. А вот понять как двигаться дальше - идиоматично для этого фреймворка масштабировать проект, без пошагового примера, глядя только на готовый код других приложений долго и трудно. Если бы можно было, то насыпал бы +10 в карму. Большой труд такую статью написать!

Sign up to leave a comment.

Articles