Боксирующие кнопки

Исходный код программы для этой главы можно найти здесь.

В этом разделе мы рассмотрим, как структурировать ваш UI с помощью упаковок (box), изменять метку (label) и запрограммировать нажатие по кнопке. А также, к концу вы поймёте, как:

  1. Добавлять дочерние элементы в панель заголовка;
  2. Добавлять классы стилей к кнопке;
  3. Управлять состоянием приложения с помощью атомарных счётчиков Arc и выравнивать виджеты внутри контейнера.

Напомним, что каждый GTK объект, который можно получить из контейнера gtk - заворачивают, так что не стоит беспокоится о правилах заимствования Rust. Объекты GTK считают ссылки, поэтому, когда вам нужно передать GTK объект через несколько замыканий, вы можете сделать это с помощью клонирования новой ссылки.

Необходимые знания

Прежде чем продолжить изучение урока, убедитесь что вы понимаете что такое атомарность и атомарный счётчик ссылок (Arc). Эти понятия критически важны для возможности разделять состояние между несколькими замыканиями или потоками. Изучить этот вопрос можно в документации модулей std::sync и std::sync::atomic. Так же, вы можете ознакомиться с безблокировочной конкурентностью (lockless concurrency) в этом документе.