Форум программистов, компьютерный форум, киберфорум
Наши страницы
Curry
Войти
Регистрация
Восстановить пароль
Оценить эту запись

Rust + conrod

Запись от Curry размещена 21.09.2019 в 20:36
Обновил(-а) Curry 25.09.2019 в 21:42

Всё началось с того, что NeoMatrix придумал программистам задачку. Задачка была тривиальная и никому делать её не хотелось. А я решил, если уж делать, то на чём ни будь мало знакомом, используя задание с учебной целью. Rust я как то изучал немного, потом забыл. А язык интересный. Решил сделать на нём.
На https://crates.io удалось найти только одну GUI библиотечку (из за простоты назвать её фреймвёком ну никак нельзя), которая поставилась без продолжительного бития в бубен.
Это conrod.
Понравилось что в деле GUI-строения в Rust процветает модульный подход.
К примеру, графика может отрисовываться с помощью OpenGL (у меня этот вариант), а может через игровой движок piston, или через vulkan. Для кроссплатформенного создания окон используется отдельный крейт, для цикла обработки сообщений другой. То есть, в перспективе, можно пилить какую то свою часть.
Пока же интегрирующая всё это conrod сыровата и бледновата. Нет даже копипаста из/в поля редактирования текста.
Но, по самому минимуму, работает, что и демонстрирую
Нажмите на изображение для увеличения
Название: phone_db.PNG
Просмотров: 120
Размер:	40.7 Кб
ID:	5576
По желанию NeoMatrix-а телефоны сохраняются в текстовых файлах, а не в нормальной базе.
Имена файлов создаю по числовым идентификаторам сотовых операторов,а не именам операторов, потому как, кто его знает, какие названия у операторов могут быть, может с недопустимыми для имён файлов символами. Тем более, что у NeoMatrix-а linux, а пробелы в именах операторов бывают. Кодировка опять же.
В общем, по кодам имена файлов, а имена операторов первой строкой в файле.
Для простоты номера телефонов можно вводить только как 10 цифр без минусов и пр. Если NeoMatrix-у очень потребно вводить с минусами - приделаю.
Впереди номера подразумевается +7, что, впрочем, из картинки, думаю, ясно.
Программа выполняет только то что заказано - позволяет ввести номер, проверяет у Мегафона, какой это оператор и добавляет в базу.
Вставка из буфера обмена отсутствует, т.к. её нет в conrod. В принципе, можно повесить на горячую клавишу или отдельную кнопку вставку. Наверняка для Rust уже сделали крейт для кроссплатформенного использования буфера обмена.

Исходник phone_db.0.1.1.zip. Большую часть размера архива занимают шрифты которые взяты из демок к conrod-у.

Инструкция по сборке:
1. Установить rust. Линуксоиды наверняка предпочтут устаревшие версии из репок своих линуксов.
2. Убедится что cargo доступно в PATH.
3. Распаковать архив с исходниками, перейти в него и выполнить
Bash
1
cargo run
p.s. Black Fregat обнаружил что программа может не запускаться на виртуальной машине. Указанный выше архив теперь содержит указанное в комментариях исправление.
Размещено в Rust
Просмотров 264 Комментарии 6
Всего комментариев 6
Комментарии
  1. Старый комментарий
    Аватар для Black Fregat
    Код:
    error: local variables in const fn are unstable
      --> /Users/black.fregat/.cargo/registry/src/github.com-1ecc6299db9ec823/percent-encoding-2.1.0/lib.rs:72:13
       |
    72 |         let chunk = self.mask[byte as usize / BITS_PER_CHUNK];
       |             ^^^^^
    Запись от Black Fregat размещена 23.09.2019 в 15:19 Black Fregat вне форума
  2. Старый комментарий
    Аватар для Curry
    Может rust обновить?
    У меня
    Цитата:
    $ rustc --version
    rustc 1.37.0 (eae3437df 2019-08-13)
    крейт percent-encoding-2.1.0 у меня тоже есть в зависимостях (косвенно), но собралось без ошибок.
    Запись от Curry размещена 23.09.2019 в 15:43 Curry вне форума
  3. Старый комментарий
    Аватар для Black Fregat
    После обновления скомпилировалось на трёх системах, на двух даже запустилось )
    На третей
    Код:
    thread 'main' panicked at 'called `Result::unwrap()` on an `Err` value: GlutinCreationError(NoAvailablePixelFormat)', src/libcore/result.rs:999:5
    note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace.
    Запись от Black Fregat размещена 24.09.2019 в 13:04 Black Fregat вне форума
  4. Старый комментарий
    Аватар для Curry
    Остаётся понять чем отличается третья.
    https://github.com/PistonDevelopers/conrod/issues/1031
    Третья - VM? Поддерживается ли OpenGL?

    Пишут что можно попробовать закомментировать в main.rs вот это
    C
    1
    
    .with_multisampling(4)
    Запись от Curry размещена 24.09.2019 в 15:29 Curry вне форума
  5. Старый комментарий
    Аватар для Black Fregat
    Цитата:
    Сообщение от Curry Просмотреть комментарий
    Остаётся понять чем отличается третья
    Все три разные - Windows, MacOS, Linux (Fedora).
    Да, Fedora на виртуалке.
    Но могу попробовать и на реальном железе, если интересно

    Цитата:
    Сообщение от Curry Просмотреть комментарий
    Пишут что можно попробовать закомментировать
    Помогло. Так что это за строчка?
    Запись от Black Fregat размещена 24.09.2019 в 16:11 Black Fregat вне форума
  6. Старый комментарий
    Аватар для Curry
    http://lux.graphics/doc/glium/glutin...uirements.html
    Цитата:
    multisampling - Contains the minimum number of samples per pixel in the color, depth and stencil buffers. None means "don't care". Default is None. A value of Some(0) indicates that multisampling must not be enabled.
    Скорее всего виртуалка это не поддерживает. Или федора. Может, даже, в ней можно как то openGL апгрейнуть.
    В общем, работать и без неё может, но, в теории, медленее. Для такого приложения всё равно.
    Запись от Curry размещена 24.09.2019 в 16:26 Curry вне форума
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.