{"id":74896,"date":"2024-08-27T18:30:47","date_gmt":"2024-08-27T15:00:47","guid":{"rendered":"https:\/\/nabfollower.com\/blog\/building-cross-platform-gui-apps-in-rust-using-egui-42la\/"},"modified":"2024-08-27T18:30:47","modified_gmt":"2024-08-27T15:00:47","slug":"building-cross-platform-gui-apps-in-rust-using-egui-42la","status":"publish","type":"post","link":"https:\/\/nabfollower.com\/blog\/building-cross-platform-gui-apps-in-rust-using-egui-42la\/","title":{"rendered":"\u0633\u0627\u062e\u062a \u0628\u0631\u0646\u0627\u0645\u0647 \u0647\u0627\u06cc \u0631\u0627\u0628\u0637 \u06a9\u0627\u0631\u0628\u0631\u06cc \u06af\u0631\u0627\u0641\u06cc\u06a9\u06cc \u0645\u062a\u0642\u0627\u0628\u0644 \u067e\u0644\u062a \u0641\u0631\u0645 \u062f\u0631 Rust \u0628\u0627 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 egui"},"content":{"rendered":"<p>Summarize this content to 400 words in Persian Lang<br \/>\n            \u0646\u0648\u0634\u062a\u0647 \u0645\u0627\u0631\u06cc\u0648 \u0632\u0648\u067e\u0627\u0646\u270f\ufe0f<\/p>\n<p>\u0627\u0632 \u0632\u0645\u0627\u0646 \u0638\u0647\u0648\u0631 Electron\u060c \u06a9\u0647 \u0645\u0646\u062c\u0631 \u0628\u0647 \u06a9\u0645\u06cc \u0631\u0646\u0633\u0627\u0646\u0633 \u0628\u0631\u0646\u0627\u0645\u0647 \u0647\u0627\u06cc \u062f\u0633\u06a9\u062a\u0627\u067e \u0645\u062a\u0642\u0627\u0628\u0644 \u067e\u0644\u062a \u0641\u0631\u0645 \u0628\u0627 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 \u0641\u0646\u0627\u0648\u0631\u06cc \u0648\u0628 \u0634\u062f\u060c \u0645\u062d\u062f\u0648\u062f\u06cc\u062a \u0647\u0627\u06cc \u0627\u06cc\u0646 \u0631\u0648\u06cc\u06a9\u0631\u062f \u0622\u0634\u06a9\u0627\u0631 \u0634\u062f. \u0632\u0645\u0627\u0646 \u0622\u0647\u0633\u062a\u0647 \u0631\u0627\u0647 \u0627\u0646\u062f\u0627\u0632\u06cc\u060c \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 \u0645\u0646\u0627\u0628\u0639 \u0628\u0633\u06cc\u0627\u0631 \u0628\u0627\u0644\u0627\u060c \u0648 \u0645\u062d\u062f\u0648\u062f\u06cc\u062a \u0647\u0627\u06cc \u0641\u0646\u0627\u0648\u0631\u06cc \u0648\u0628 \u0628\u0631\u0627\u06cc \u0633\u0627\u062e\u062a \u0628\u0631\u0646\u0627\u0645\u0647 \u0647\u0627\u06cc \u0631\u0627\u0628\u0637 \u06a9\u0627\u0631\u0628\u0631\u06cc \u06af\u0631\u0627\u0641\u06cc\u06a9\u06cc \u0628\u0627 \u0648\u0641\u0627\u062f\u0627\u0631\u06cc \u0628\u0627\u0644\u0627\u060c \u0647\u0645\u0686\u0646\u0627\u0646 \u06a9\u0627\u0631\u0628\u0631\u0627\u0646 \u0628\u0633\u06cc\u0627\u0631\u06cc \u0627\u0632 \u0628\u0631\u0646\u0627\u0645\u0647 \u0647\u0627\u06cc \u06a9\u0627\u0631\u0628\u0631\u062f\u06cc \u0645\u0628\u062a\u0646\u06cc \u0628\u0631 \u0627\u0644\u06a9\u062a\u0631\u0648\u0646 \u0631\u0627 \u062a\u0627 \u0628\u0647 \u0627\u0645\u0631\u0648\u0632 \u0622\u0632\u0627\u0631 \u0645\u06cc \u062f\u0647\u062f. <\/p>\n<p>Electron \u0633\u0627\u062e\u062a \u0627\u067e\u0644\u06cc\u06a9\u06cc\u0634\u0646\u200c\u0647\u0627\u06cc \u062f\u0633\u06a9\u200c\u062a\u0627\u067e \u0686\u0646\u062f \u067e\u0644\u062a\u0641\u0631\u0645\u06cc \u0631\u0627 \u0628\u0633\u06cc\u0627\u0631 \u0642\u0627\u0628\u0644 \u062f\u0633\u062a\u0631\u0633\u200c\u062a\u0631 \u0627\u0632 \u0631\u0648\u06cc\u06a9\u0631\u062f\u0647\u0627\u06cc \u0642\u0628\u0644\u06cc \u062e\u0648\u062f \u06a9\u0631\u062f\u060c \u0627\u0645\u0627 \u0645\u0637\u0645\u0626\u0646\u0627\u064b \u067e\u0627\u0633\u062e \u0647\u0645\u0647 \u0686\u06cc\u0632 \u0646\u0628\u0648\u062f. \u0645\u0634\u06a9\u0644 \u0633\u0627\u062e\u062a \u0628\u0631\u0646\u0627\u0645\u0647 \u0647\u0627\u06cc \u06a9\u0627\u0631\u0628\u0631\u062f\u06cc \u0686\u0646\u062f \u067e\u0644\u062a\u0641\u0631\u0645\u06cc \u063a\u0646\u06cc\u060c \u0628\u0633\u06cc\u0627\u0631 \u06a9\u0627\u0631\u0622\u0645\u062f \u0648 \u0642\u0648\u06cc \u0647\u0646\u0648\u0632 \u062d\u0644 \u0646\u0634\u062f\u0647 \u0627\u0633\u062a \u0648 \u0648\u0639\u062f\u0647 &#8220;\u06cc\u06a9 \u0628\u0627\u0631 \u0628\u0633\u0627\u0632\u06cc\u062f\u060c \u0647\u0631 \u062c\u0627 \u0627\u062c\u0631\u0627 \u06a9\u0646\u06cc\u062f&#8221; \u0647\u0646\u0648\u0632 \u062f\u0631 \u0647\u06cc\u0686 \u06cc\u06a9 \u0627\u0632 \u0641\u0646\u0627\u0648\u0631\u06cc \u0647\u0627\u06cc \u0645\u0648\u062c\u0648\u062f \u062f\u0631 \u062d\u0627\u0644 \u062d\u0627\u0636\u0631 \u0622\u0634\u06a9\u0627\u0631 \u0646\u0634\u062f\u0647 \u0627\u0633\u062a. <\/p>\n<p>\u0628\u0627 \u0627\u06cc\u0646 \u062d\u0627\u0644\u060c \u0628\u0627 \u0639\u0644\u0627\u0642\u0647\u200c\u0645\u0646\u062f\u06cc \u062c\u062f\u06cc\u062f \u0628\u0647 \u0628\u0631\u0646\u0627\u0645\u0647\u200c\u0647\u0627\u06cc \u062f\u0633\u06a9\u062a\u0627\u067e \u0645\u062a\u0642\u0627\u0628\u0644 \u067e\u0644\u062a\u0641\u0631\u0645 \u0648 \u0628\u0647\u0628\u0648\u062f \u067e\u0644\u062a\u0641\u0631\u0645 \u0648\u0628 \u062f\u0631 \u0627\u0645\u062a\u062f\u0627\u062f \u062e\u0637\u0648\u0637 WebGL\/WebGPU\u060c \u0648 \u0647\u0645\u0686\u0646\u06cc\u0646 WebAssembly\u060c \u067e\u0631\u0648\u0698\u0647\u200c\u0647\u0627\u06cc \u062c\u0627\u0644\u0628 \u0632\u06cc\u0627\u062f\u06cc \u0628\u0647 \u0648\u062c\u0648\u062f \u0622\u0645\u062f\u0646\u062f \u06a9\u0647 \u062a\u0644\u0627\u0634 \u0645\u06cc\u200c\u06a9\u0646\u0646\u062f \u06af\u0627\u0645\u200c\u0647\u0627\u06cc \u0628\u0639\u062f\u06cc \u0631\u0627 \u062f\u0631 \u062a\u0644\u0627\u0634 \u0628\u0631\u0627\u06cc \u0633\u0627\u062e\u062a\u0646 \u0628\u0631\u062f\u0627\u0631\u0646\u062f. \u067e\u0627\u06cc\u0647 \u0648 \u0627\u0633\u0627\u0633 \u0628\u0631\u0646\u0627\u0645\u0647 \u0647\u0627\u06cc \u06a9\u0627\u0631\u0628\u0631\u062f\u06cc \u0631\u0627\u0628\u0637 \u06a9\u0627\u0631\u0628\u0631\u06cc \u06af\u0631\u0627\u0641\u06cc\u06a9\u06cc \u06a9\u0631\u0627\u0633 \u067e\u0644\u062a\u0641\u0631\u0645. <\/p>\n<p>\u06cc\u06a9\u06cc \u0627\u0632 \u0627\u06cc\u0646 \u067e\u0631\u0648\u0698\u0647 \u0647\u0627 \u06a9\u0647 \u0628\u0627 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 Rust \u0633\u0627\u062e\u062a\u0647 \u0634\u062f\u0647 \u0627\u0633\u062a\u060c egui \u0627\u0633\u062a. \u062f\u0631 \u0627\u06cc\u0646 \u0645\u0642\u0627\u0644\u0647\u060c \u062e\u0648\u0627\u0647\u06cc\u0645 \u062f\u06cc\u062f \u06a9\u0647 \u0686\u06af\u0648\u0646\u0647 \u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u06cc\u0645 \u06cc\u06a9 \u0628\u0631\u0646\u0627\u0645\u0647 \u06af\u0631\u0627\u0641\u06cc\u06a9\u06cc \u0633\u0627\u062f\u0647 \u0648 \u0686\u0646\u062f \u067e\u0644\u062a\u0641\u0631\u0645\u06cc \u0628\u0627 \u0622\u0646 \u0628\u0633\u0627\u0632\u06cc\u0645. <\/p>\n<p>\u0645\u0627 \u0642\u0635\u062f \u062f\u0627\u0631\u06cc\u0645 \u06cc\u06a9 \u0628\u0631\u0646\u0627\u0645\u0647 \u0645\u062f\u06cc\u0631\u06cc\u062a \u062d\u06cc\u0648\u0627\u0646\u0627\u062a \u062e\u0627\u0646\u06af\u06cc \u0628\u0633\u06cc\u0627\u0631 \u0633\u0627\u062f\u0647 \u0628\u0633\u0627\u0632\u06cc\u0645 \u06a9\u0647 \u0628\u0647 \u0645\u0627 \u0627\u0645\u06a9\u0627\u0646 \u0645\u06cc \u062f\u0647\u062f \u062d\u06cc\u0648\u0627\u0646\u0627\u062a \u062e\u0627\u0646\u06af\u06cc \u0631\u0627 \u0627\u0636\u0627\u0641\u0647 \u0648 \u062d\u0630\u0641 \u06a9\u0646\u06cc\u0645 \u0648 \u0644\u06cc\u0633\u062a \u0648 \u0646\u0645\u0627\u06cc \u062c\u0632\u0626\u06cc\u0627\u062a \u0631\u0627 \u0628\u0647 \u0645\u0627 \u0646\u0634\u0627\u0646 \u0645\u06cc \u062f\u0647\u062f. <\/p>\n<p>\u0628\u0631\u0627\u06cc \u0627\u06cc\u0646\u06a9\u0647 \u06a9\u0644 \u0645\u0648\u0636\u0648\u0639 \u062c\u0627\u0644\u0628 \u062a\u0631 \u0634\u0648\u062f\u060c \u0627\u0632 \u06cc\u06a9 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc \u06a9\u0646\u06cc\u0645 sqlite \u067e\u0627\u06cc\u06af\u0627\u0647 \u062f\u0627\u062f\u0647 \u0628\u0631\u0627\u06cc \u0630\u062e\u06cc\u0631\u0647 \u0633\u0627\u0632\u06cc \u062f\u0627\u062f\u0647 \u0647\u0627\u060c \u0648 \u0647\u0631 \u0632\u0645\u0627\u0646 \u06a9\u0647 \u0635\u0641\u062d\u0647 \u062c\u0632\u0626\u06cc\u0627\u062a \u062d\u06cc\u0648\u0627\u0646 \u062e\u0627\u0646\u06af\u06cc \u0628\u0627\u0632 \u0634\u0648\u062f\u060c \u062a\u0635\u0648\u06cc\u0631\u06cc \u062a\u0635\u0627\u062f\u0641\u06cc \u0627\u0632 \u06cc\u06a9 \u06af\u0631\u0628\u0647 \u06cc\u0627 \u0633\u06af \u062f\u0631\u06cc\u0627\u0641\u062a \u0645\u06cc \u06a9\u0646\u06cc\u0645. <\/p>\n<p>\u0627\u0645\u0627 \u0627\u0628\u062a\u062f\u0627\u060c \u0628\u06cc\u0627\u06cc\u06cc\u062f \u06a9\u0645\u06cc \u0628\u06cc\u0634\u062a\u0631 \u062f\u0631 \u0645\u0648\u0631\u062f egui \u0648 \u062f\u0644\u06cc\u0644 \u062c\u0627\u0644\u0628 \u0628\u0648\u062f\u0646 \u0622\u0646 \u0628\u06cc\u0627\u0645\u0648\u0632\u06cc\u0645.<\/p>\n<p>  egui \/ eframe<\/p>\n<p>Egui \u06cc\u06a9 \u06a9\u062a\u0627\u0628\u062e\u0627\u0646\u0647\/\u0686\u0627\u0631\u0686\u0648\u0628 \u0631\u0627\u0628\u0637 \u06a9\u0627\u0631\u0628\u0631\u06cc \u06af\u0631\u0627\u0641\u06cc\u06a9\u06cc \u0645\u0628\u062a\u0646\u06cc \u0628\u0631 Rust \u0648 \u062d\u0627\u0644\u062a \u0641\u0648\u0631\u06cc \u0627\u0633\u062a \u06a9\u0647 \u0628\u0631 \u0633\u0647\u0648\u0644\u062a \u0627\u0633\u062a\u0641\u0627\u062f\u0647\u060c \u067e\u0627\u0633\u062e\u06af\u0648\u06cc\u06cc \u0648 \u0642\u0627\u0628\u0644\u06cc\u062a \u062d\u0645\u0644 \u062a\u0645\u0631\u06a9\u0632 \u062f\u0627\u0631\u062f. <\/p>\n<p>\u0627\u0645\u0627 \u0635\u0628\u0631 \u06a9\u0646\u06cc\u062f\u060c &#8220;\u062d\u0627\u0644\u062a \u0641\u0648\u0631\u06cc&#8221; \u0628\u0647 \u0686\u0647 \u0645\u0639\u0646\u0627\u0633\u062a\u061f \u062e\u0648\u0628\u060c \u062f\u0631 \u062f\u0646\u06cc\u0627\u06cc \u0631\u0627\u0628\u0637\u200c\u0647\u0627\u06cc \u06a9\u0627\u0631\u0628\u0631\u06cc \u06af\u0631\u0627\u0641\u06cc\u06a9\u06cc\u060c \u062f\u0648 \u0631\u0627\u0647 \u06a9\u0644\u06cc \u0628\u0631\u0627\u06cc \u0633\u0627\u062e\u062a \u0628\u0631\u0646\u0627\u0645\u0647\u200c\u0647\u0627 \u0648\u062c\u0648\u062f \u062f\u0627\u0631\u062f &#8211; \u062d\u0627\u0644\u062a \u062d\u0641\u0638 \u0634\u062f\u0647 \u0648 \u062d\u0627\u0644\u062a \u0641\u0648\u0631\u06cc\u060c \u0628\u0627 \u062d\u0627\u0644\u062a \u062d\u0641\u0638 \u0634\u062f\u0647 \u06a9\u0647 \u0628\u06cc\u0634\u062a\u0631 \u0645\u0648\u0627\u0631\u062f\u06cc \u0631\u0627 \u06a9\u0647 \u0627\u062d\u062a\u0645\u0627\u0644\u0627\u064b \u062f\u0631 \u0645\u0648\u0631\u062f \u0686\u0627\u0631\u0686\u0648\u0628\u200c\u0647\u0627\u06cc \u0631\u0627\u0628\u0637 \u06a9\u0627\u0631\u0628\u0631\u06cc \u06af\u0631\u0627\u0641\u06cc\u06a9\u06cc (\u0645\u0627\u0646\u0646\u062f QT \u06cc\u0627 DOM) \u0645\u06cc\u200c\u062f\u0627\u0646\u06cc\u062f \u067e\u0648\u0634\u0634 \u0645\u06cc\u200c\u062f\u0647\u062f. <\/p>\n<p>\u062d\u0627\u0644\u062a \u0641\u0648\u0631\u06cc\u060c \u06a9\u0647 \u0628\u0631\u0627\u06cc \u0627\u0648\u0644\u06cc\u0646 \u0628\u0627\u0631 \u062f\u0631 \u0627\u06cc\u0646 \u0648\u06cc\u062f\u06cc\u0648 \u062a\u0648\u0633\u0637 \u06a9\u06cc\u0633\u06cc \u0645\u0648\u0631\u0627\u062a\u0648\u0631\u06cc \u062f\u0631 \u0633\u0627\u0644 2005 \u0630\u06a9\u0631 \u0634\u062f\u060c \u0628\u0627 \u0633\u0627\u062f\u0647\u200c\u0633\u0627\u0632\u06cc \u0631\u0648\u06cc\u06a9\u0631\u062f \u062a\u0639\u0627\u0645\u0644\u060c \u0631\u0648\u06cc\u06a9\u0631\u062f \u0645\u062a\u0641\u0627\u0648\u062a\u06cc \u0646\u0633\u0628\u062a \u0628\u0647 \u0631\u0627\u0628\u0637 \u06a9\u0627\u0631\u0628\u0631\u06cc \u062d\u0627\u0644\u062a \u062d\u0641\u0638 \u0634\u062f\u0647 \u062f\u0627\u0631\u062f. <\/p>\n<p>\u0628\u0647\u200c\u062c\u0627\u06cc \u0627\u0641\u0632\u0648\u062f\u0646 \u06a9\u0646\u062a\u0631\u0644\u200c\u06a9\u0646\u0646\u062f\u0647\u200c\u0647\u0627\u06cc \u067e\u0627\u0633\u062e \u0628\u0647 \u062a\u0645\u0627\u0633 \u0628\u0647 \u0639\u0646\u0627\u0635\u0631\u060c \u0645\u0627\u0646\u0646\u062f \u062f\u06a9\u0645\u0647\u200c\u0647\u0627\u060c \u062f\u0631 \u062d\u0627\u0644\u06cc \u06a9\u0647 \u0639\u0646\u0635\u0631 \u062f\u0631 \u0628\u0631\u0646\u0627\u0645\u0647 \u0631\u0627\u0628\u0637 \u06a9\u0627\u0631\u0628\u0631\u06cc \u06af\u0631\u0627\u0641\u06cc\u06a9\u06cc \u00ab\u062d\u0641\u0638\u00bb \u0645\u06cc\u200c\u0634\u0648\u062f \u0648 \u0641\u0642\u0637 \u0628\u0631 \u0627\u0633\u0627\u0633 \u062f\u0631\u062e\u0648\u0627\u0633\u062a \u062a\u063a\u06cc\u06cc\u0631 \u0645\u06cc\u200c\u06a9\u0646\u062f\u060c \u062f\u0631 \u062d\u0627\u0644\u062a \u0641\u0648\u0631\u06cc\u060c \u0647\u0631 \u0639\u0646\u0635\u0631 \u0631\u0648\u06cc \u0635\u0641\u062d\u0647 \u062f\u0631 \u0647\u0631 \u0641\u0631\u06cc\u0645 \u0646\u0645\u0627\u06cc\u0634 \u062f\u0627\u062f\u0647 \u0645\u06cc\u200c\u0634\u0648\u062f\u060c \u0628\u0646\u0627\u0628\u0631\u0627\u06cc\u0646 \u0647\u0631\u06af\u0648\u0646\u0647 \u062a\u0639\u0627\u0645\u0644\u06cc \u0627\u0646\u062c\u0627\u0645 \u0645\u06cc\u200c\u0634\u0648\u062f. \u0641\u0648\u0631\u06cc <\/p>\n<p>\u0627\u06cc\u0646 \u062a\u0641\u0627\u0648\u062a \u0628\u0631\u062e\u06cc \u0645\u0639\u0627\u0648\u0636\u0647 \u0647\u0627 \u0631\u0627 \u0628\u0647 \u0647\u0645\u0631\u0627\u0647 \u062f\u0627\u0631\u062f. \u0628\u0647 \u0639\u0646\u0648\u0627\u0646 \u0645\u062b\u0627\u0644\u060c \u0686\u06cc\u062f\u0645\u0627\u0646 \u067e\u06cc\u0686\u06cc\u062f\u0647 \u062f\u0631 \u0631\u0627\u0628\u0637 \u06a9\u0627\u0631\u0628\u0631\u06cc \u06af\u0631\u0627\u0641\u06cc\u06a9\u06cc \u062d\u0627\u0644\u062a \u0641\u0648\u0631\u06cc \u0628\u0633\u06cc\u0627\u0631 \u0633\u062e\u062a \u062a\u0631 \u0627\u0633\u062a\u060c \u0632\u06cc\u0631\u0627 \u0627\u0637\u0644\u0627\u0639\u0627\u062a \u0632\u06cc\u0627\u062f\u06cc \u062f\u0631 \u0645\u0648\u0631\u062f \u0647\u0631 \u0641\u0631\u06cc\u0645 \u0646\u062f\u0627\u0631\u06cc\u062f. \u0631\u0627\u0647\u200c\u062d\u0644\u200c\u0647\u0627\u06cc\u06cc \u0628\u0631\u0627\u06cc \u0627\u06cc\u0646 \u06a9\u0627\u0631 \u0648\u062c\u0648\u062f \u062f\u0627\u0631\u062f\u060c \u0627\u0645\u0627 \u062f\u0631 \u0631\u0627\u0628\u0637 \u06a9\u0627\u0631\u0628\u0631\u06cc \u06af\u0631\u0627\u0641\u06cc\u06a9\u06cc \u062d\u0627\u0644\u062a \u062d\u0641\u0638 \u0634\u062f\u0647 \u0622\u0633\u0627\u0646\u200c\u062a\u0631 \u0627\u0633\u062a. <\/p>\n<p>\u0628\u0647 \u0637\u0648\u0631 \u06a9\u0644\u06cc\u060c \u0633\u0627\u062e\u062a\u0646 \u0648 \u0627\u0633\u062a\u062f\u0644\u0627\u0644 \u062f\u0631 \u0645\u0648\u0631\u062f \u0631\u0627\u0628\u0637\u200c\u0647\u0627\u06cc \u06a9\u0627\u0631\u0628\u0631\u06cc \u06af\u0631\u0627\u0641\u06cc\u06a9\u06cc \u062d\u0627\u0644\u062a \u0641\u0648\u0631\u06cc \u0628\u0633\u06cc\u0627\u0631 \u0633\u0627\u062f\u0647\u200c\u062a\u0631 \u0627\u0633\u062a\u060c \u0632\u06cc\u0631\u0627 \u062a\u0639\u0627\u0645\u0644 \u0647\u0645\u0632\u0645\u0627\u0646\u200c\u062a\u0631 \u0627\u0633\u062a\u060c \u06a9\u0647 \u0645\u0634\u06a9\u0644 \u0648\u0636\u0639\u06cc\u062a \u0628\u0631\u0646\u0627\u0645\u0647 \u0648 \u0646\u0627\u0647\u0645\u06af\u0627\u0645 \u0628\u0648\u062f\u0646 \u0622\u0646\u0686\u0647 \u0631\u0627 \u06a9\u0647 \u0631\u0648\u06cc \u0635\u0641\u062d\u0647 \u0646\u0645\u0627\u06cc\u0634 \u062f\u0627\u062f\u0647 \u0645\u06cc\u200c\u0634\u0648\u062f\u060c \u0628\u0631\u0637\u0631\u0641 \u0645\u06cc\u200c\u06a9\u0646\u062f. \u0627\u06cc\u0646 \u06cc\u06a9 \u0645\u0634\u06a9\u0644 \u0627\u0635\u0644\u06cc \u062f\u0631 \u0631\u0627\u0628\u0637 \u06a9\u0627\u0631\u0628\u0631\u06cc \u06af\u0631\u0627\u0641\u06cc\u06a9\u06cc \u062d\u0627\u0644\u062a \u062d\u0641\u0638 \u0634\u062f\u0647 \u0627\u0633\u062a. <\/p>\n<p>\u0634\u0646\u0627\u062e\u062a\u0647 \u0634\u062f\u0647 \u062a\u0631\u06cc\u0646 \u0686\u0627\u0631\u0686\u0648\u0628 \u0631\u0627\u0628\u0637 \u06a9\u0627\u0631\u0628\u0631\u06cc \u06af\u0631\u0627\u0641\u06cc\u06a9\u06cc \u062d\u0627\u0644\u062a \u0641\u0648\u0631\u06cc\u060c \u06a9\u0647 egui \u0646\u06cc\u0632 \u0627\u0632 \u0622\u0646 \u0627\u0644\u0647\u0627\u0645 \u06af\u0631\u0641\u062a\u0647 \u0634\u062f\u0647\u060c Dear imgui \u0627\u0633\u062a. \u0645\u062e\u0632\u0646 egui \u0647\u0645\u0686\u0646\u06cc\u0646 \u062f\u0627\u0631\u0627\u06cc \u06cc\u06a9 \u0628\u062e\u0634 \u062f\u0631 \u0645\u0648\u0631\u062f \u0645\u0639\u0627\u0648\u0636\u0647 \u0647\u0627 \u062f\u0631 \u0631\u0627\u0628\u0637\u0647 \u0628\u0627 \u0631\u0627\u0628\u0637 \u06a9\u0627\u0631\u0628\u0631\u06cc \u06af\u0631\u0627\u0641\u06cc\u06a9\u06cc \u062d\u0627\u0644\u062a \u0641\u0648\u0631\u06cc \u0627\u0633\u062a \u06a9\u0647 \u0645\u0646 \u0642\u0637\u0639\u0627\u064b \u062a\u0648\u0635\u06cc\u0647 \u0645\u06cc \u06a9\u0646\u0645 \u0622\u0646 \u0631\u0627 \u0628\u0631\u0631\u0633\u06cc \u06a9\u0646\u06cc\u062f.<\/p>\n<p>  \u0633\u0641\u0627\u0631\u0634\u06cc \u0633\u0627\u0632\u06cc \u0648 \u062f\u0633\u062a\u0631\u0633\u06cc<\/p>\n<p>\u06cc\u06a9 \u062c\u0646\u0628\u0647 \u062c\u0627\u0644\u0628 \u0627\u0632 egui \u0622\u0646 \u0627\u0633\u062a egui \u062f\u0631 \u0648\u0627\u0642\u0639 \u0641\u0642\u0637 \u06cc\u06a9 \u06a9\u062a\u0627\u0628\u062e\u0627\u0646\u0647 \u0628\u0631\u0627\u06cc \u0633\u0627\u062e\u062a \u06cc\u06a9 \u0631\u0627\u0628\u0637 \u06a9\u0627\u0631\u0628\u0631\u06cc \u06af\u0631\u0627\u0641\u06cc\u06a9\u06cc \u0627\u0633\u062a\u060c \u0646\u0647 \u06cc\u06a9 \u0686\u0627\u0631\u0686\u0648\u0628. \u0627\u0645\u0627 \u0686\u0627\u0631\u0686\u0648\u0628\u06cc \u0647\u0645 \u0628\u0647 \u0646\u0627\u0645 \u0648\u062c\u0648\u062f \u062f\u0627\u0631\u062f eframe\u060c \u06a9\u0647 \u0645\u062d\u06cc\u0637 \u0627\u0637\u0631\u0627\u0641 \u0631\u0627 \u0628\u0631\u0627\u06cc \u0633\u0627\u062e\u062a \u06cc\u06a9 \u0628\u0631\u0646\u0627\u0645\u0647 \u0648\u0627\u0642\u0639\u06cc \u0627\u0636\u0627\u0641\u0647 \u0645\u06cc \u06a9\u0646\u062f. <\/p>\n<p>\u06a9\u062a\u0627\u0628\u062e\u0627\u0646\u0647\u060c egui \u0631\u0627 \u0645\u06cc \u062a\u0648\u0627\u0646 \u062f\u0631 \u0686\u0627\u0631\u0686\u0648\u0628 \u0647\u0627\u06cc \u0645\u062e\u062a\u0644\u0641\u060c \u0645\u0627\u0646\u0646\u062f \u0645\u0648\u062a\u0648\u0631\u0647\u0627\u06cc \u0628\u0627\u0632\u06cc\u060c \u0627\u062f\u063a\u0627\u0645 \u06a9\u0631\u062f\u060c \u06a9\u0647 \u0642\u0627\u0628\u0644\u06cc\u062a \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u062c\u062f\u062f \u0648 \u0645\u0627\u0698\u0648\u0644\u0627\u0631 \u0628\u0648\u062f\u0646 \u062e\u0648\u0628\u06cc \u0631\u0627 \u0627\u06cc\u062c\u0627\u062f \u0645\u06cc \u06a9\u0646\u062f. <\/p>\n<p>\u06cc\u06a9\u06cc \u0627\u0632 \u062c\u0646\u0628\u0647 \u0647\u0627\u06cc \u0645\u0647\u0645 \u0647\u0631 \u06a9\u062a\u0627\u0628\u062e\u0627\u0646\u0647 \u06cc\u0627 \u0686\u0627\u0631\u0686\u0648\u0628 \u0631\u0627\u0628\u0637 \u06a9\u0627\u0631\u0628\u0631\u06cc \u06af\u0631\u0627\u0641\u06cc\u06a9\u06cc\u060c \u0627\u0645\u06a9\u0627\u0646 \u0633\u0641\u0627\u0631\u0634\u06cc \u0633\u0627\u0632\u06cc \u0627\u0633\u062a egui \u0634\u0645\u0627 \u0631\u0627 \u062f\u0631 \u0622\u0646\u062c\u0627 \u062a\u062d\u062a \u067e\u0648\u0634\u0634 \u0642\u0631\u0627\u0631 \u062f\u0627\u062f\u0647 \u0627\u0633\u062a. <\/p>\n<p>\u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u06cc\u062f \u062f\u0631 \u0635\u0641\u062d\u0647 \u0646\u0645\u0627\u06cc\u0634\u06cc \u0641\u0648\u0642\u200c\u0627\u0644\u0639\u0627\u062f\u0647 \u0622\u0646\u200c\u0647\u0627 \u0645\u0634\u0627\u0647\u062f\u0647 \u06a9\u0646\u06cc\u062f\u060c \u06a9\u0647 \u0646\u0647 \u062a\u0646\u0647\u0627 \u062a\u0645\u0627\u0645 \u0648\u06cc\u062c\u062a\u200c\u0647\u0627\u06cc \u0645\u0648\u062c\u0648\u062f \u0648 \u0628\u0631\u062e\u06cc \u0627\u0632 \u0628\u0631\u0646\u0627\u0645\u0647\u200c\u0647\u0627\u06cc \u0646\u0645\u0627\u06cc\u0634\u06cc \u0639\u0627\u0644\u06cc \u0631\u0627 \u0646\u0634\u0627\u0646 \u0645\u06cc\u200c\u062f\u0647\u062f\u060c \u0628\u0644\u06a9\u0647 \u0627\u0628\u0632\u0627\u0631\u0647\u0627\u06cc \u0627\u0634\u06a9\u0627\u0644 \u0632\u062f\u0627\u06cc\u06cc \u0648 \u06af\u0632\u06cc\u0646\u0647\u200c\u0647\u0627\u06cc \u0633\u0641\u0627\u0631\u0634\u06cc\u200c\u0633\u0627\u0632\u06cc \u0631\u0627 \u0646\u06cc\u0632 \u0646\u0634\u0627\u0646 \u0645\u06cc\u200c\u062f\u0647\u062f\u060c \u0628\u0646\u0627\u0628\u0631\u0627\u06cc\u0646 \u0642\u0628\u0644 \u0627\u0632 \u063a\u0648\u0627\u0635\u06cc \u0639\u0645\u06cc\u0642\u200c\u062a\u0631 \u0628\u0627 \u0622\u0646 \u0628\u0627\u0632\u06cc \u06a9\u0646\u06cc\u062f. <\/p>\n<p>Egui \u0647\u0645\u0686\u0646\u06cc\u0646 \u062f\u0627\u0631\u0627\u06cc \u0627\u0633\u0646\u0627\u062f \u0639\u0627\u0644\u06cc \u0648 \u0646\u0645\u0648\u0646\u0647 \u0647\u0627\u06cc \u0628\u0633\u06cc\u0627\u0631 \u0632\u06cc\u0627\u062f\u06cc \u0627\u0633\u062a \u06a9\u0647 \u0628\u0631\u0627\u06cc \u0622\u0645\u0648\u0632\u0634 \u0648 \u0646\u0634\u0627\u0646 \u062f\u0627\u062f\u0646 \u0642\u0627\u0628\u0644\u06cc\u062a \u0647\u0627\u06cc \u06a9\u062a\u0627\u0628\u062e\u0627\u0646\u0647 \u0633\u0627\u062e\u062a\u0647 \u0634\u062f\u0647 \u0627\u0646\u062f:    \u06cc\u06a9\u06cc \u062f\u06cc\u06af\u0631 \u0627\u0632 \u062c\u0646\u0628\u0647\u200c\u0647\u0627\u06cc \u062c\u0627\u0644\u0628 egui \u0627\u06cc\u0646 \u0627\u0633\u062a \u06a9\u0647 AccessKit \u0631\u0627 \u06cc\u06a9\u067e\u0627\u0631\u0686\u0647 \u0645\u06cc\u200c\u06a9\u0646\u062f\u060c \u06cc\u06a9 \u0686\u0627\u0631\u0686\u0648\u0628 \u0628\u06cc\u0646 \u067e\u0644\u062a\u0641\u0631\u0645\u06cc \u0628\u0631\u0627\u06cc \u062f\u0633\u062a\u0631\u0633\u06cc. <\/p>\n<p>\u0627\u06af\u0631\u0686\u0647 AccessKit\u060c \u062f\u0631 \u0632\u0645\u0627\u0646 \u0646\u06af\u0627\u0631\u0634\u060c \u067e\u06cc\u0627\u062f\u0647\u200c\u0633\u0627\u0632\u06cc \u06a9\u0627\u0645\u0644\u06cc \u0628\u0631\u0627\u06cc \u0648\u0628 \u0646\u062f\u0627\u0631\u062f\u060c \u0628\u0647 \u0646\u0638\u0631 \u0645\u06cc\u200c\u0631\u0633\u062f \u06cc\u06a9 \u067e\u0631\u0648\u0698\u0647 \u0628\u0633\u06cc\u0627\u0631 \u0627\u0645\u06cc\u062f\u0648\u0627\u0631\u06a9\u0646\u0646\u062f\u0647 \u0628\u0631\u0627\u06cc \u0622\u0633\u0627\u0646\u200c\u062a\u0631 \u06a9\u0631\u062f\u0646 \u067e\u06cc\u0627\u062f\u0647\u200c\u0633\u0627\u0632\u06cc \u0648\u06cc\u0698\u06af\u06cc\u200c\u0647\u0627\u06cc \u062f\u0633\u062a\u0631\u0633\u06cc \u0628\u0631\u0627\u06cc \u0647\u0631 \u067e\u0644\u062a\u0641\u0631\u0645 \u0628\u0627\u0634\u062f.<\/p>\n<p>  \u06a9\u0631\u0627\u0633 \u067e\u0644\u062a\u0641\u0631\u0645 \u0648 \u0648\u0628<\/p>\n<p>\u0647\u0645\u0627\u0646\u0637\u0648\u0631 \u06a9\u0647 \u062f\u0631 \u0627\u0628\u062a\u062f\u0627 \u0630\u06a9\u0631 \u0634\u062f\u060c \u0647\u062f\u0641 \u0627\u0632 egui \u0627\u06cc\u0646 \u0627\u0633\u062a \u06a9\u0647 \u06cc\u06a9 \u06a9\u062a\u0627\u0628\u062e\u0627\u0646\u0647 \u0628\u0631\u0646\u0627\u0645\u0647 \u0631\u0627\u0628\u0637 \u06a9\u0627\u0631\u0628\u0631\u06cc \u06af\u0631\u0627\u0641\u06cc\u06a9\u06cc \u0628\u06cc\u0646 \u067e\u0644\u062a\u0641\u0631\u0645\u06cc \u0628\u0627\u0634\u062f. \u0628\u0627 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 eframe_template\u060c \u0645\u06cc \u062a\u0648\u0627\u0646 \u0628\u0631\u0646\u0627\u0645\u0647 \u0647\u0627\u06cc\u06cc \u0628\u0631\u0627\u06cc \u0644\u06cc\u0646\u0648\u06a9\u0633\u060c \u0645\u06a9\u060c \u0648\u06cc\u0646\u062f\u0648\u0632\u060c \u0627\u0646\u062f\u0631\u0648\u06cc\u062f \u0648 \u0648\u0628 \u0628\u0627 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 WebGL\/WebGPU \u0648 WASM \u0633\u0627\u062e\u062a. <\/p>\n<p>\u067e\u0634\u062a\u06cc\u0628\u0627\u0646\u06cc \u0627\u0632 \u067e\u0644\u062a\u0641\u0631\u0645 \u0647\u0627\u06cc \u0645\u062e\u062a\u0644\u0641 \u0647\u0646\u0648\u0632 \u062f\u0631 \u0645\u0631\u062d\u0644\u0647 \u0628\u0644\u0648\u063a \u0627\u0633\u062a\u060c \u0627\u0645\u0627 \u0628\u0631\u0627\u06cc \u062f\u0633\u06a9\u062a\u0627\u067e \u0627\u0632 \u0642\u0628\u0644 \u0628\u0647 \u0637\u0648\u0631 \u067e\u0627\u06cc\u062f\u0627\u0631 \u06a9\u0627\u0631 \u0645\u06cc \u06a9\u0646\u062f. \u0628\u0627 \u062a\u0648\u062c\u0647 \u0628\u0647 \u0631\u0648\u06cc\u06a9\u0631\u062f\u06cc \u06a9\u0647 \u0628\u0647 \u0648\u0628 \u0645\u06cc\u200c\u0631\u0633\u062f\u060c \u0645\u062d\u062f\u0648\u062f\u06cc\u062a\u200c\u0647\u0627\u06cc\u06cc \u0648\u062c\u0648\u062f \u062f\u0627\u0631\u062f\u060c \u0628\u0646\u0627\u0628\u0631\u0627\u06cc\u0646 egui \u0645\u0637\u0645\u0626\u0646\u0627\u064b \u062c\u0627\u06cc\u06af\u0632\u06cc\u0646\u06cc \u0628\u0631\u0627\u06cc \u0633\u0627\u062e\u062a \u0647\u06cc\u0686 \u0648 \u0647\u0645\u0647 \u0628\u0631\u0646\u0627\u0645\u0647\u200c\u0647\u0627\u06cc \u06a9\u0627\u0631\u0628\u0631\u062f\u06cc \u0648\u0628 \u0646\u06cc\u0633\u062a\u060c \u0627\u0645\u0627 \u0633\u0639\u06cc \u0646\u0645\u06cc\u200c\u06a9\u0646\u062f \u062e\u0648\u062f \u0631\u0627 \u0628\u0647 \u0627\u06cc\u0646 \u0634\u06a9\u0644 \u0628\u0627\u0634\u062f \u06cc\u0627 \u062a\u0628\u0644\u06cc\u063a \u06a9\u0646\u062f. <\/p>\n<p>\u0628\u0627 \u0627\u06cc\u0646 \u062d\u0627\u0644\u060c \u0648\u0642\u062a\u06cc \u0628\u0647 \u0628\u0631\u0646\u0627\u0645\u0647\u200c\u0647\u0627\u06cc \u0622\u0632\u0645\u0627\u06cc\u0634\u06cc \u062f\u0631 \u0635\u0641\u062d\u0647 \u0646\u0645\u0627\u06cc\u0634\u06cc \u0646\u06af\u0627\u0647 \u0645\u06cc\u200c\u06a9\u0646\u06cc\u062f\u060c \u06a9\u0627\u0645\u0644\u0627\u064b \u0686\u0634\u0645\u06af\u06cc\u0631 \u0627\u0633\u062a \u06a9\u0647 \u0627\u0632 \u0642\u0628\u0644 \u0628\u0627 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 egui \u062d\u062a\u06cc \u062f\u0631 \u0645\u062d\u062f\u0648\u062f\u062a\u0631\u06cc\u0646 \u0645\u062d\u06cc\u0637 \u0622\u0646 \u0645\u0645\u06a9\u0646 \u0627\u0633\u062a. <\/p>\n<p>\u062f\u0631 \u0645\u062b\u0627\u0644\u06cc \u06a9\u0647 \u062f\u0631 \u0627\u06cc\u0646 \u0645\u0642\u0627\u0644\u0647 \u0622\u0645\u062f\u0647 \u0627\u0633\u062a\u060c \u0645\u0627 \u06cc\u06a9 \u0628\u0631\u0646\u0627\u0645\u0647 \u062f\u0633\u06a9\u062a\u0627\u067e \u0627\u0648\u0644 \u0645\u06cc \u0633\u0627\u0632\u06cc\u0645 \u06a9\u0647 \u0646\u0645\u06cc \u062a\u0648\u0627\u0646\u06cc\u0645 \u0622\u0646 \u0631\u0627 \u062f\u0631 WASM \u06a9\u0627\u0645\u067e\u0627\u06cc\u0644 \u06a9\u0646\u06cc\u0645 \u0632\u06cc\u0631\u0627 \u0627\u0632 sqlite \u0628\u0647 \u0639\u0646\u0648\u0627\u0646 \u0630\u062e\u06cc\u0631\u0647 \u0633\u0627\u0632\u06cc \u062f\u0627\u062f\u0647 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc \u06a9\u0646\u06cc\u0645. <\/p>\n<p>\u0628\u0627 \u0627\u06cc\u0646 \u062d\u0627\u0644\u060c \u0628\u0627 \u0686\u0646\u062f \u062a\u063a\u06cc\u06cc\u0631 \u0648\u0627\u0628\u0633\u062a\u0647 \u0628\u0647 \u067e\u0644\u062a \u0641\u0631\u0645 \u0648 eframe_template\u060c \u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u06cc\u0645 \u062f\u0631 \u0647\u0646\u06af\u0627\u0645 \u0633\u0627\u062e\u062a\u0646 \u0628\u0631\u0627\u06cc WASM \u0627\u0632 \u0630\u062e\u06cc\u0631\u0647\u200c\u0633\u0627\u0632\u06cc \u062f\u0627\u062f\u0647\u200c\u0647\u0627\u06cc \u0645\u062a\u0641\u0627\u0648\u062a\u06cc \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0646\u06cc\u0645\u060c \u0648 \u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u06cc\u0645 \u0622\u0646 \u0631\u0627 \u0628\u0631\u0627\u06cc \u0648\u0628 \u0646\u06cc\u0632 \u06a9\u0627\u0631 \u06a9\u0646\u06cc\u0645\u060c \u0627\u0645\u0627 \u0627\u06cc\u0646 \u0645\u0648\u0636\u0648\u0639 \u062e\u0627\u0631\u062c \u0627\u0632 \u0645\u062d\u062f\u0648\u062f\u0647 \u0627\u06cc\u0646 \u067e\u0633\u062a \u0627\u0633\u062a. <\/p>\n<p>\u0628\u06cc\u0627\u06cc\u06cc\u062f \u0634\u0631\u0648\u0639 \u0628\u0647 \u0633\u0627\u062e\u062a \u0628\u0631\u0646\u0627\u0645\u0647 \u062e\u0648\u062f \u06a9\u0646\u06cc\u0645!<\/p>\n<p>  \u0631\u0627\u0647 \u0627\u0646\u062f\u0627\u0632\u06cc<\/p>\n<p>\u0628\u0631\u0627\u06cc \u0627\u062f\u0627\u0645\u0647\u060c \u062a\u0646\u0647\u0627 \u0686\u06cc\u0632\u06cc \u06a9\u0647 \u0646\u06cc\u0627\u0632 \u062f\u0627\u0631\u06cc\u062f\u060c \u0646\u0635\u0628 \u0627\u062e\u06cc\u0631 Rust \u0627\u0633\u062a \u06a9\u0647 1.79 \u0622\u062e\u0631\u06cc\u0646 \u0645\u0648\u0631\u062f \u062f\u0631 \u0632\u0645\u0627\u0646 \u0646\u06af\u0627\u0631\u0634 \u0627\u06cc\u0646 \u0645\u0642\u0627\u0644\u0647 \u0627\u0633\u062a. <\/p>\n<p>\u0627\u0628\u062a\u062f\u0627 \u06cc\u06a9 \u067e\u0631\u0648\u0698\u0647 Rust \u062c\u062f\u06cc\u062f \u0627\u06cc\u062c\u0627\u062f \u06a9\u0646\u06cc\u062f:<\/p>\n<p>cargo new rust-egui-example<br \/>\ncd rust-egui-example<\/p>\n<p>    \u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/p>\n<p>    \u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/p>\n<p>\u062f\u0631 \u0645\u0631\u062d\u0644\u0647 \u0628\u0639\u062f\u060c \u0641\u0627\u06cc\u0644 Cargo.toml \u0631\u0627 \u0648\u06cc\u0631\u0627\u06cc\u0634 \u06a9\u0646\u06cc\u062f \u0648 \u0648\u0627\u0628\u0633\u062a\u06af\u06cc \u0647\u0627\u06cc \u0645\u0648\u0631\u062f \u0646\u06cc\u0627\u0632 \u062e\u0648\u062f \u0631\u0627 \u0627\u0636\u0627\u0641\u0647 \u06a9\u0646\u06cc\u062f:<\/p>\n[dependencies]\nsqlite = &#8220;0.36.0&#8221;<br \/>\nanyhow = &#8220;1.0.82&#8221;<br \/>\neframe = { version = &#8220;0.28.0&#8221;, features = [&#8220;wgpu&#8221;] }<br \/>\nenv_logger = &#8220;0.11.3&#8221;<br \/>\nlog = &#8220;0.4.21&#8221;<br \/>\nehttp = { version = &#8220;0.5.0&#8221;, features = [&#8220;json&#8221;] }<br \/>\nserde = { version = &#8220;1.0.203&#8221;, features = [&#8220;derive&#8221;] }<br \/>\negui_extras = { version = &#8220;0.28.0&#8221;, features = [&#8220;all_loaders&#8221;] }<br \/>\nimage = { version = &#8220;0.25&#8221;, features = [&#8220;jpeg&#8221;, &#8220;png&#8221;] }<\/p>\n<p>    \u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/p>\n<p>    \u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/p>\n<p>\u0631\u0627 \u0627\u0636\u0627\u0641\u0647 \u0645\u06cc \u06a9\u0646\u06cc\u0645 egui \u0648 eframe \u0648\u0627\u0628\u0633\u062a\u06af\u06cc \u0647\u0627 \u0648 \u0647\u0645\u0686\u0646\u06cc\u0646 egui_extras\u060c \u06a9\u0647 \u0628\u0647 \u0645\u0627 \u0627\u0645\u06a9\u0627\u0646 \u0645\u06cc \u062f\u0647\u062f \u0627\u0632 \u0639\u0645\u0644\u06a9\u0631\u062f \u0628\u0627\u0631\u06af\u0630\u0627\u0631\u06cc \u062a\u0635\u0648\u06cc\u0631 \u0647\u0645\u0631\u0627\u0647 \u0628\u0627 image \u062c\u0639\u0628\u0647 <\/p>\n<p>\u0645\u0627 \u0647\u0645 \u0627\u0636\u0627\u0641\u0647 \u0645\u06cc \u06a9\u0646\u06cc\u0645 ehttp \u0628\u0631\u0627\u06cc \u0648\u0627\u06a9\u0634\u06cc \u062a\u0635\u0627\u0648\u06cc\u0631 \u062d\u06cc\u0648\u0627\u0646\u0627\u062a \u062a\u0635\u0627\u062f\u0641\u06cc \u0648 serde \u0628\u0631\u0627\u06cc \u0633\u0631\u06cc\u0627\u0644 \u0633\u0627\u0632\u06cc \u0648 \u0633\u0631\u06cc\u0627\u0644 \u0632\u062f\u0627\u06cc\u06cc \u0639\u0644\u0627\u0648\u0647 \u0628\u0631 \u0627\u06cc\u0646\u060c \u0645\u0627 \u0646\u06cc\u0627\u0632 \u062f\u0627\u0631\u06cc\u0645 sqlite \u0628\u0631\u0627\u06cc \u0630\u062e\u06cc\u0631\u0647 \u0633\u0627\u0632\u06cc \u062f\u0627\u062f\u0647 \u0647\u0627\u06cc \u0645\u0627\u060c \u0648 \u0645\u0627 \u0627\u0636\u0627\u0641\u0647 \u0645\u06cc \u06a9\u0646\u06cc\u0645 anyhow \u0628\u0631\u0627\u06cc \u0631\u0633\u06cc\u062f\u06af\u06cc \u0622\u0633\u0627\u0646 \u062a\u0631 \u062e\u0637\u0627 \u0648 env_logger \u0648 log \u0628\u0631\u0627\u06cc \u0642\u0627\u0628\u0644\u06cc\u062a \u0647\u0627\u06cc \u0648\u0631\u0648\u062f \u0628\u0647 \u0633\u06cc\u0633\u062a\u0645 <\/p>\n<p>\u0648 \u0628\u0627 \u0622\u0646\u060c \u0645\u0627 \u0645\u06cc \u062a\u0648\u0627\u0646\u06cc\u0645 \u0634\u0631\u0648\u0639 \u0628\u0647 \u0633\u0627\u062e\u062a \u0628\u0631\u0646\u0627\u0645\u0647 \u062e\u0648\u062f \u06a9\u0646\u06cc\u0645!<\/p>\n<p>  \u0645\u062f\u0644 \u062f\u0627\u062f\u0647<\/p>\n<p>\u0627\u0628\u062a\u062f\u0627 \u0645\u062f\u0644 \u062f\u0627\u062f\u0647 \u0647\u0627\u06cc \u0627\u0633\u0627\u0633\u06cc \u062e\u0648\u062f \u0631\u0627 \u062a\u0639\u0631\u06cc\u0641 \u0645\u06cc \u06a9\u0646\u06cc\u0645. \u0645\u0627 \u062f\u0631 \u062d\u0627\u0644 \u0633\u0627\u062e\u062a \u06cc\u06a9 \u0628\u0631\u0646\u0627\u0645\u0647 \u0645\u062f\u06cc\u0631\u06cc\u062a \u062d\u06cc\u0648\u0627\u0646\u0627\u062a \u062e\u0627\u0646\u06af\u06cc \u0647\u0633\u062a\u06cc\u0645\u060c \u0628\u0646\u0627\u0628\u0631\u0627\u06cc\u0646 \u0628\u0647 \u06cc\u06a9 \u0628\u0631\u0646\u0627\u0645\u0647 \u0646\u06cc\u0627\u0632 \u062f\u0627\u0631\u06cc\u0645 Pet \u0646\u0648\u0639 \u0645\u0627 \u0647\u0645 \u062a\u0635\u0645\u06cc\u0645 \u06af\u0631\u0641\u062a\u06cc\u0645 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0646\u06cc\u0645 sqlite \u0628\u0631\u0627\u06cc \u0630\u062e\u06cc\u0631\u0647 \u0633\u0627\u0632\u06cc \u062f\u0627\u062f\u0647\u060c \u0628\u0646\u0627\u0628\u0631\u0627\u06cc\u0646 \u0628\u0631\u0627\u06cc \u06a9\u0627\u0631 \u0628\u0627 \u0645\u062f\u0644 \u062f\u0627\u062f\u0647 \u062e\u0648\u062f \u0628\u0627 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 SQL \u0628\u0647 \u062a\u0646\u0638\u06cc\u0645\u0627\u062a\u06cc \u0646\u06cc\u0627\u0632 \u062f\u0627\u0631\u06cc\u0645:<\/p>\n<p>#[derive(Debug, PartialEq, Clone)]\nstruct PetKind(String);<\/p>\n<p>#[derive(Debug, PartialEq, Clone)]\nstruct Pet {<br \/>\n    id: i64,<br \/>\n    name: String,<br \/>\n    age: i64,<br \/>\n    kind: PetKind,<br \/>\n}<\/p>\n<p>    \u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/p>\n<p>    \u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/p>\n<p>\u0627\u06cc\u0646 Pet \u0646\u0648\u0639 \u0628\u0633\u06cc\u0627\u0631 \u0633\u0627\u062f\u0647 \u0627\u0633\u062a \u0648 \u0634\u0627\u0645\u0644 \u06cc\u06a9 id\u060c name\u060c age \u0648 kind. \u0627\u0644\u0628\u062a\u0647\u060c \u0645\u0627 \u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u06cc\u0645 \u0628\u0633\u06cc\u0627\u0631\u06cc \u0627\u0632 \u0648\u06cc\u0698\u06af\u06cc\u200c\u0647\u0627\u06cc \u062c\u0627\u0644\u0628\u200c\u062a\u0631 \u0631\u0627 \u0627\u0636\u0627\u0641\u0647 \u06a9\u0646\u06cc\u0645\u060c \u0627\u0645\u0627 \u0622\u0646 \u0631\u0627 \u0633\u0627\u062f\u0647 \u0646\u06af\u0647 \u0645\u06cc\u200c\u062f\u0627\u0631\u06cc\u0645. <\/p>\n<p>\u0645\u0631\u062d\u0644\u0647 \u0628\u0639\u062f\u06cc \u0627\u06cc\u062c\u0627\u062f \u062c\u062f\u0648\u0644 \u062f\u0631 \u0645\u0627 \u0627\u0633\u062a sqlite \u067e\u0627\u06cc\u06af\u0627\u0647 \u062f\u0627\u062f\u0647:<\/p>\n<p>CREATE TABLE IF NOT EXISTS pets (<br \/>\n    id INTEGER PRIMARY KEY,<br \/>\n    name TEXT NOT NULL,<br \/>\n    age INTEGER NOT NULL,<br \/>\n    kind TEXT NOT NULL<br \/>\n);<\/p>\n<p>INSERT INTO pets (name, age, kind) VALUES (&#8216;minka&#8217;, 9, &#8216;cat&#8217;);<br \/>\nINSERT INTO pets (name, age, kind) VALUES (&#8216;nala&#8217;, 7, &#8216;dog&#8217;);<\/p>\n<p>    \u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/p>\n<p>    \u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/p>\n<p>\u0627\u06cc\u0646 \u0628\u0647 \u0633\u0627\u062f\u06af\u06cc \u0622\u06cc\u0646\u0647 \u0645\u0627\u0633\u062a Pet \u0646\u0648\u0639 \u0647\u0645\u0686\u0646\u06cc\u0646 \u0645\u06cc \u062a\u0648\u0627\u0646\u06cc\u0645 \u067e\u0631\u0633 \u0648 \u062c\u0648\u0647\u0627\u06cc\u06cc \u0631\u0627 \u06a9\u0647 \u0628\u0631\u0627\u06cc \u0639\u0645\u0644\u06cc\u0627\u062a \u0645\u0648\u0631\u062f \u0646\u06cc\u0627\u0632 \u062e\u0648\u062f \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u062e\u0648\u0627\u0647\u06cc\u0645 \u06a9\u0631\u062f\u060c \u062a\u0639\u0631\u06cc\u0641 \u06a9\u0646\u06cc\u0645.<\/p>\n<p>    \u06cc\u06a9 \u062d\u06cc\u0648\u0627\u0646 \u062e\u0627\u0646\u06af\u06cc \u0631\u0627 \u0627\u0632 \u067e\u0627\u06cc\u06af\u0627\u0647 \u062f\u0627\u062f\u0647 \u0628\u0627 \u0634\u0646\u0627\u0633\u0647 \u0622\u0646 \u0648\u0627\u06a9\u0634\u06cc \u06a9\u0646\u06cc\u062f<br \/>\n    \u0647\u0645\u0647 \u062d\u06cc\u0648\u0627\u0646\u0627\u062a \u062e\u0627\u0646\u06af\u06cc \u0631\u0627 \u0627\u0632 \u067e\u0627\u06cc\u06af\u0627\u0647 \u062f\u0627\u062f\u0647 \u0648\u0627\u06a9\u0634\u06cc \u06a9\u0646\u06cc\u062f<br \/>\n    \u06cc\u06a9 \u062d\u06cc\u0648\u0627\u0646 \u062e\u0627\u0646\u06af\u06cc \u0631\u0627 \u062f\u0631 \u067e\u0627\u06cc\u06af\u0627\u0647 \u062f\u0627\u062f\u0647 \u0642\u0631\u0627\u0631 \u062f\u0647\u06cc\u062f<br \/>\n    \u06cc\u06a9 \u062d\u06cc\u0648\u0627\u0646 \u062e\u0627\u0646\u06af\u06cc \u0631\u0627 \u0627\u0632 \u067e\u0627\u06cc\u06af\u0627\u0647 \u062f\u0627\u062f\u0647 \u062d\u0630\u0641 \u06a9\u0646\u06cc\u062f<\/p>\n<p>const GET_PET_BY_ID: &amp;str = &#8220;SELECT id, name, age, kind FROM pets where id = ?&#8221;;<br \/>\nconst DELETE_PET_BY_ID: &amp;str = &#8220;DELETE FROM pets where id = ?&#8221;;<br \/>\nconst INSERT_PET: &amp;str =<br \/>\n    &#8220;INSERT INTO pets (name, age, kind) VALUES (?, ?, ?) RETURNING id, name, age, kind&#8221;;<br \/>\nconst GET_PETS: &amp;str = &#8220;SELECT id, name, age, kind FROM pets&#8221;;<\/p>\n<p>    \u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/p>\n<p>    \u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/p>\n<p>\u0627\u06a9\u0646\u0648\u0646\u060c \u062a\u0646\u0647\u0627 \u06a9\u0627\u0631\u06cc \u06a9\u0647 \u0628\u0627\u06cc\u062f \u0627\u0646\u062c\u0627\u0645 \u062f\u0647\u06cc\u0645 \u0627\u06cc\u0646 \u0627\u0633\u062a \u06a9\u0647 \u06cc\u06a9 \u0627\u062a\u0635\u0627\u0644 \u0628\u0647 an \u0631\u0627\u0647 \u0627\u0646\u062f\u0627\u0632\u06cc \u06a9\u0646\u06cc\u0645 sqlite \u067e\u0627\u06cc\u06af\u0627\u0647 \u062f\u0627\u062f\u0647 \u062f\u0631 \u0628\u0631\u0646\u0627\u0645\u0647 \u0645\u0627 \u0648 \u067e\u0631\u0633 \u0648 \u062c\u0648 \u0631\u0627 \u062f\u0631 \u0627\u0633\u06a9\u0631\u06cc\u067e\u062a \u0627\u0648\u0644\u06cc\u0647 \u0645\u0627 \u062f\u0631 \u0628\u0627\u0644\u0627 \u0647\u0646\u06af\u0627\u0645 \u0631\u0627\u0647 \u0627\u0646\u062f\u0627\u0632\u06cc \u0627\u062c\u0631\u0627 \u06a9\u0646\u06cc\u062f. <\/p>\n<p>\u062f\u0631 \u0627\u06cc\u0646 \u0645\u0648\u0631\u062f\u060c \u0645\u0627 \u0627\u0632 \u06cc\u06a9 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc \u06a9\u0646\u06cc\u0645 in-memory \u0646\u0633\u062e\u0647 \u0627\u0632 sqlite\u060c \u06a9\u0647 \u062a\u0633\u062a \u0631\u0627 \u0622\u0633\u0627\u0646 \u062a\u0631 \u0645\u06cc \u06a9\u0646\u062f. \u0627\u06cc\u0646 \u0628\u062f\u0627\u0646 \u0645\u0639\u0646\u06cc \u0627\u0633\u062a \u06a9\u0647 \u0647\u0631 \u0628\u0627\u0631 \u06a9\u0647 \u0628\u0631\u0646\u0627\u0645\u0647 \u0634\u0631\u0648\u0639 \u0645\u06cc \u0634\u0648\u062f \u067e\u0627\u06cc\u06af\u0627\u0647 \u062f\u0627\u062f\u0647 \u0628\u0627\u0632\u0646\u0634\u0627\u0646\u06cc \u0645\u06cc \u0634\u0648\u062f\u060c \u06a9\u0647 \u0628\u0631\u0627\u06cc \u0622\u0632\u0645\u0627\u06cc\u0634 \u062e\u0648\u0628 \u0627\u0633\u062a\u060c \u0627\u0645\u0627 \u0627\u0644\u0628\u062a\u0647 \u0627\u06af\u0631 \u0628\u062e\u0648\u0627\u0647\u06cc\u0645 \u0646\u0633\u062e\u0647 \u062a\u0648\u0644\u06cc\u062f\u06cc \u0627\u06cc\u0646 \u0628\u0631\u0646\u0627\u0645\u0647 \u0631\u0627 \u0628\u0633\u0627\u0632\u06cc\u0645\u060c \u0628\u0627\u06cc\u062f \u062a\u063a\u06cc\u06cc\u0631 \u06a9\u0646\u062f:<\/p>\n<p>fn load_init_sql() -&gt; std::io::Result {<br \/>\n    fs::read_to_string(&#8220;.\/init.sql&#8221;)<br \/>\n}<\/p>\n<p>fn main() -&gt; Result()&gt; {<br \/>\n    env_logger::init();<br \/>\n    &#8230;<br \/>\n    let init_query = load_init_sql().expect(&#8220;can load init query&#8221;);<br \/>\n    let db_con = sqlite::open(&#8220;:memory:&#8221;).expect(&#8220;can create sqlite db&#8221;);<br \/>\n    db_con<br \/>\n        .execute(init_query)<br \/>\n        .expect(&#8220;can initialize sqlite db&#8221;);<br \/>\n    &#8230;<br \/>\n}<\/p>\n<p>    \u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/p>\n<p>    \u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/p>\n<p>\u0645\u0627 \u0627\u0633\u06a9\u0631\u06cc\u067e\u062a \u0627\u0648\u0644\u06cc\u0647 \u0633\u0627\u0632\u06cc \u067e\u0627\u06cc\u06af\u0627\u0647 \u062f\u0627\u062f\u0647 \u0631\u0627 \u0628\u0627\u0631\u06af\u0630\u0627\u0631\u06cc \u0645\u06cc \u06a9\u0646\u06cc\u0645\u060c \u06cc\u06a9 \u0627\u062a\u0635\u0627\u0644 \u0628\u0647 \u062d\u0627\u0641\u0638\u0647 \u0628\u0627\u0632 \u0645\u06cc \u06a9\u0646\u06cc\u0645 sqlite \u067e\u0627\u06cc\u06af\u0627\u0647 \u062f\u0627\u062f\u0647\u060c \u0648 \u0627\u0633\u06a9\u0631\u06cc\u067e\u062a \u0631\u0627 \u0627\u062c\u0631\u0627 \u06a9\u0646\u06cc\u062f\u060c \u067e\u0627\u06cc\u06af\u0627\u0647 \u062f\u0627\u062f\u0647 \u0645\u0627 \u0631\u0627 \u0645\u0642\u062f\u0627\u0631\u062f\u0647\u06cc \u0627\u0648\u0644\u06cc\u0647 \u06a9\u0646\u06cc\u062f. <\/p>\n<p>\u0633\u067e\u0633\u060c \u0627\u062c\u0627\u0632\u0647 \u062f\u0647\u06cc\u062f \u062a\u0648\u0627\u0628\u0639 \u06a9\u0645\u06a9\u06cc \u0631\u0627 \u0628\u0631\u0627\u06cc \u0639\u0645\u0644\u06cc\u0627\u062a \u0648\u0627\u06a9\u0634\u06cc \u0648 \u0630\u062e\u06cc\u0631\u0647 \u0633\u0627\u0632\u06cc \u062f\u0627\u062f\u0647 \u0647\u0627\u06cc \u0641\u0648\u0642 \u0627\u0644\u0630\u06a9\u0631 \u062a\u0639\u0631\u06cc\u0641 \u06a9\u0646\u06cc\u0645. \u0647\u0631 \u06cc\u06a9 \u0627\u0632 \u0622\u0646\u0647\u0627 \u0631\u0627 \u062e\u0648\u0627\u0647\u062f \u06af\u0631\u0641\u062a db_con \u0627\u0645\u0627 \u062f\u0631 \u062f\u0627\u062e\u0644 \u06cc\u06a9 Arc&gt;. \u062f\u0644\u06cc\u0644 \u0622\u0646 \u0627\u06cc\u0646 \u0627\u0633\u062a \u06a9\u0647 sqlite::Connection \u0628\u0647 \u062e\u0648\u062f\u06cc \u062e\u0648\u062f \u0646\u0645\u06cc \u062a\u0648\u0627\u0646\u062f \u0628\u0647 \u0637\u0648\u0631 \u0627\u06cc\u0645\u0646 \u062f\u0631 \u0633\u0631\u0627\u0633\u0631 \u0631\u0634\u062a\u0647 \u0647\u0627 \u0628\u0647 \u0627\u0634\u062a\u0631\u0627\u06a9 \u06af\u0630\u0627\u0634\u062a\u0647 \u0634\u0648\u062f\u060c \u0628\u0646\u0627\u0628\u0631\u0627\u06cc\u0646 \u0645\u0627 \u0628\u0627\u06cc\u062f \u0622\u0646 \u0631\u0627 \u0642\u0641\u0644 \u06a9\u0646\u06cc\u0645 \u0648 \u0645\u0637\u0645\u0626\u0646 \u0634\u0648\u06cc\u0645 \u06a9\u0647 \u0647\u0645\u0647 \u0627\u0631\u062c\u0627\u0639\u0627\u062a \u0628\u0647 \u0622\u0646 \u0628\u0647 \u062d\u0633\u0627\u0628 \u0645\u06cc \u0622\u06cc\u0646\u062f. <\/p>\n<p>\u0686\u0631\u0627 \u0645\u0627 \u062d\u062a\u06cc \u0645\u06cc \u062e\u0648\u0627\u0647\u06cc\u0645 \u0622\u0646 \u0631\u0627 \u062f\u0631 \u0633\u0631\u0627\u0633\u0631 \u0631\u0634\u062a\u0647 \u0647\u0627 \u0628\u0647 \u0627\u0634\u062a\u0631\u0627\u06a9 \u0628\u06af\u0630\u0627\u0631\u06cc\u0645\u061f \u0622\u06cc\u0627 \u0646\u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u06cc\u0645 \u0641\u0642\u0637 \u0627\u0632 \u0627\u062a\u0635\u0627\u0644 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0646\u06cc\u0645 \u0648 \u0647\u0631 \u0632\u0645\u0627\u0646 \u06a9\u0647 \u0646\u06cc\u0627\u0632 \u062f\u0627\u0634\u062a\u06cc\u0645 \u062f\u0631 \u0631\u0634\u062a\u0647 \u0627\u0635\u0644\u06cc \u06a9\u0648\u0626\u0631\u06cc\u200c\u0647\u0627 \u0631\u0627 \u0628\u0647 \u0635\u0648\u0631\u062a \u0647\u0645\u0632\u0645\u0627\u0646 \u0627\u062c\u0631\u0627 \u06a9\u0646\u06cc\u0645\u061f <\/p>\n<p>\u0645\u0627 \u0645\u06cc \u062a\u0648\u0627\u0646\u0633\u062a\u06cc\u0645\u060c \u0627\u0645\u0627 \u0627\u0632 \u0622\u0646\u062c\u0627\u06cc\u06cc \u06a9\u0647 \u0642\u0631\u0627\u0631 \u0627\u0633\u062a \u0627\u06cc\u0646 \u06cc\u06a9 \u0628\u0631\u0646\u0627\u0645\u0647 \u0631\u0627\u0628\u0637 \u06a9\u0627\u0631\u0628\u0631\u06cc \u06af\u0631\u0627\u0641\u06cc\u06a9\u06cc \u0628\u0633\u06cc\u0627\u0631 \u062a\u0639\u0627\u0645\u0644\u06cc \u0628\u0627\u0634\u062f\u060c \u0645\u0633\u062f\u0648\u062f \u06a9\u0631\u062f\u0646 \u0631\u0634\u062a\u0647 \u0627\u0635\u0644\u06cc \u0627\u06cc\u062f\u0647 \u062e\u0648\u0628\u06cc \u0646\u06cc\u0633\u062a. \u0627\u06af\u0631 \u06a9\u0627\u0631\u0628\u0631 \u0631\u0648\u06cc \u062f\u06a9\u0645\u0647\u200c\u0627\u06cc \u06a9\u0644\u06cc\u06a9 \u0645\u06cc\u200c\u06a9\u0631\u062f\u060c \u062a\u0627 \u0632\u0645\u0627\u0646\u06cc \u06a9\u0647 \u062a\u0645\u0627\u0645 \u062f\u0631\u062e\u0648\u0627\u0633\u062a\u200c\u0647\u0627\u06cc\u06cc \u06a9\u0647 \u0628\u0627 \u0641\u0634\u0627\u0631 \u062f\u0627\u062f\u0646 \u062f\u06a9\u0645\u0647 \u0641\u0639\u0627\u0644 \u0645\u06cc\u200c\u0634\u0648\u0646\u062f\u060c UI \u067e\u0627\u0633\u062e\u06af\u0648 \u0646\u0645\u06cc\u200c\u0634\u0648\u062f. <\/p>\n<p>\u0627\u06cc\u0646 \u0631\u0641\u062a\u0627\u0631\u06cc \u0646\u06cc\u0633\u062a \u06a9\u0647 \u0645\u0627 \u0628\u0647 \u062f\u0646\u0628\u0627\u0644 \u0622\u0646 \u0647\u0633\u062a\u06cc\u0645\u060c \u0648 \u0628\u0646\u0627\u0628\u0631\u0627\u06cc\u0646 \u0645\u06cc\u200c\u062e\u0648\u0627\u0647\u06cc\u0645 \u06cc\u06a9 \u0633\u06cc\u0633\u062a\u0645 \u0627\u0646\u062a\u0642\u0627\u0644 \u0631\u0648\u06cc\u062f\u0627\u062f \u0633\u0627\u062f\u0647 \u0628\u0633\u0627\u0632\u06cc\u0645\u060c \u06a9\u0647 \u0628\u0647 \u0631\u0634\u062a\u0647 \u0627\u0635\u0644\u06cc \u0627\u062c\u0627\u0632\u0647 \u0645\u06cc\u200c\u062f\u0647\u062f \u0631\u0648\u06cc\u062f\u0627\u062f\u0647\u0627 \u0631\u0627 \u0628\u0647 \u06cc\u06a9 \u0631\u0634\u062a\u0647 \u067e\u0633\u200c\u0632\u0645\u06cc\u0646\u0647 \u0627\u0631\u0633\u0627\u0644 \u06a9\u0646\u062f\u060c \u06a9\u0647 \u0633\u067e\u0633 \u06a9\u0627\u0631 \u0648\u0627\u06a9\u0634\u06cc \u062f\u0627\u062f\u0647\u200c\u0647\u0627 \u0631\u0627 \u0628\u0647 \u0635\u0648\u0631\u062a \u0646\u0627\u0647\u0645\u0632\u0645\u0627\u0646 \u0627\u0646\u062c\u0627\u0645 \u0645\u06cc\u200c\u062f\u0647\u062f \u0648 \u0628\u0647 \u0627\u0635\u0644\u06cc \u0627\u0637\u0644\u0627\u0639 \u0645\u06cc\u200c\u062f\u0647\u062f. \u0632\u0645\u0627\u0646\u06cc \u06a9\u0647 \u062f\u0627\u062f\u0647 \u0647\u0627 \u062f\u0631 \u062f\u0633\u062a\u0631\u0633 \u0647\u0633\u062a\u0646\u062f\u060c \u0631\u0634\u062a\u0647 \u06a9\u0646\u06cc\u062f. <\/p>\n<p>\u0628\u06cc\u0627\u06cc\u06cc\u062f \u0628\u0647 \u06a9\u0645\u06a9 \u06a9\u0646\u0646\u062f\u0647 \u0647\u0627\u06cc \u0639\u0645\u0644\u06cc\u0627\u062a \u062f\u0627\u062f\u0647 \u0646\u06af\u0627\u0647 \u06a9\u0646\u06cc\u0645. \u0645\u0627 \u0628\u0627 \u0642\u0631\u0627\u0631 \u062f\u0627\u062f\u0646 \u062d\u06cc\u0648\u0627\u0646\u0627\u062a \u062e\u0627\u0646\u06af\u06cc \u062c\u062f\u06cc\u062f \u062f\u0631 \u067e\u0627\u06cc\u06af\u0627\u0647 \u062f\u0627\u062f\u0647 \u0634\u0631\u0648\u0639 \u0645\u06cc \u06a9\u0646\u06cc\u0645:<\/p>\n<p>fn insert_pet_to_db(db_con: ArcMutex&gt;, pet: Pet) -&gt; Result {<br \/>\n    let con = db_con<br \/>\n        .lock()<br \/>\n        .map_err(|_| anyhow!(&#8220;error while locking db connection&#8221;))?;<br \/>\n    let mut stmt = con.prepare(INSERT_PET)?;<br \/>\n    stmt.bind((1, pet.name.as_str()))?;<br \/>\n    stmt.bind((2, pet.age))?;<br \/>\n    stmt.bind((3, pet.kind.0.as_str()))?;<\/p>\n<p>    if stmt.next()? == sqlite::State::Row {<br \/>\n        let id = stmt.read::i64, _&gt;(0)?;<br \/>\n        let name = stmt.read::String, _&gt;(1)?;<br \/>\n        let age = stmt.read::i64, _&gt;(2)?;<br \/>\n        let kind = stmt.read::String, _&gt;(3)?;<\/p>\n<p>        return Ok(Pet {<br \/>\n            id,<br \/>\n            name,<br \/>\n            age,<br \/>\n            kind: PetKind(kind),<br \/>\n        });<br \/>\n    }<\/p>\n<p>    Err(anyhow!(&#8220;error while inserting pet&#8221;))<br \/>\n}<\/p>\n<p>    \u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/p>\n<p>    \u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/p>\n<p>\u0627\u0628\u062a\u062f\u0627 \u0628\u0627\u06cc\u062f \u06cc\u06a9 \u0642\u0641\u0644 \u0628\u0631\u0627\u06cc \u0627\u062a\u0635\u0627\u0644 \u067e\u0627\u06cc\u06af\u0627\u0647 \u062f\u0627\u062f\u0647 \u0645\u0634\u062a\u0631\u06a9 \u062e\u0648\u062f \u062f\u0627\u0634\u062a\u0647 \u0628\u0627\u0634\u06cc\u0645\u060c \u0628\u0646\u0627\u0628\u0631\u0627\u06cc\u0646 \u0645\u0637\u0645\u0626\u0646 \u0647\u0633\u062a\u06cc\u0645 \u06a9\u0647 \u062a\u0646\u0647\u0627 \u0645\u0627 \u0627\u0632 \u0622\u0646 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc \u06a9\u0646\u06cc\u0645. \u0633\u067e\u0633\u060c \u06cc\u06a9 \u0639\u0628\u0627\u0631\u062a \u0622\u0645\u0627\u062f\u0647 \u0634\u062f\u0647 \u0628\u0627 \u067e\u0631\u0633 \u0648 \u062c\u0648 \u062a\u0639\u0631\u06cc\u0641 \u0634\u062f\u0647 \u062f\u0631 \u0628\u0627\u0644\u0627 \u0627\u06cc\u062c\u0627\u062f \u0645\u06cc \u06a9\u0646\u06cc\u0645 \u0648 \u0645\u0642\u0627\u062f\u06cc\u0631 \u0648\u0631\u0648\u062f\u06cc \u0631\u0627 \u0628\u0647 \u0647\u0645\u062a\u0627\u06cc\u0627\u0646 \u0645\u0631\u0628\u0648\u0637\u0647 \u062e\u0648\u062f \u062f\u0631 \u067e\u0631\u0633 \u0648 \u062c\u0648 \u0645\u062a\u0635\u0644 \u0645\u06cc \u06a9\u0646\u06cc\u0645. <\/p>\n<p>\u0633\u067e\u0633\u060c \u06a9\u0648\u0626\u0631\u06cc \u0631\u0627 \u0627\u062c\u0631\u0627 \u0645\u06cc \u06a9\u0646\u06cc\u0645 \u0648 \u06cc\u06a9 \u067e\u0631\u0633 \u0648 \u062c\u0648 \u062c\u062f\u06cc\u062f \u0627\u06cc\u062c\u0627\u062f \u0645\u06cc \u06a9\u0646\u06cc\u0645 Pet \u0627\u0632 \u0631\u062f\u06cc\u0641 \u0628\u0631\u06af\u0634\u062a\u06cc \u0627\u06af\u0631 \u0639\u0645\u0644\u06cc\u0627\u062a \u0646\u0627\u0645\u0648\u0641\u0642 \u0628\u0627\u0634\u062f\u060c \u062e\u0637\u0627 \u0631\u0627 \u0645\u0646\u062a\u0634\u0631 \u0645\u06cc \u06a9\u0646\u06cc\u0645. <\/p>\n<p>\u0628\u06cc\u0627\u06cc\u06cc\u062f \u062f\u0631 \u0627\u062f\u0627\u0645\u0647 \u0628\u0647 \u062d\u0630\u0641 \u062d\u06cc\u0648\u0627\u0646 \u062e\u0627\u0646\u06af\u06cc \u0646\u06af\u0627\u0647 \u06a9\u0646\u06cc\u0645:<\/p>\n<p>fn delete_pet_from_db(db_con: ArcMutex&gt;, pet_id: i64) -&gt; Result()&gt; {<br \/>\n    let con = db_con<br \/>\n        .lock()<br \/>\n        .map_err(|_| anyhow!(&#8220;error while locking db connection&#8221;))?;<br \/>\n    let mut stmt = con.prepare(DELETE_PET_BY_ID)?;<br \/>\n    stmt.bind((1, pet_id))?;<\/p>\n<p>    if stmt.next()? == sqlite::State::Done {<br \/>\n        Ok(())<br \/>\n    } else {<br \/>\n        Err(anyhow!(&#8220;error while deleting pet with id {}&#8221;, pet_id))<br \/>\n    }<br \/>\n}<\/p>\n<p>    \u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/p>\n<p>    \u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/p>\n<p>\u062d\u0630\u0641 \u062d\u06cc\u0648\u0627\u0646 \u062e\u0627\u0646\u06af\u06cc \u0628\u0633\u06cc\u0627\u0631 \u0633\u0627\u062f\u0647 \u0627\u0633\u062a. \u0645\u0627 \u06cc\u06a9 \u0642\u0641\u0644 \u0628\u0631\u0627\u06cc \u0627\u062a\u0635\u0627\u0644 \u067e\u0627\u06cc\u06af\u0627\u0647 \u062f\u0627\u062f\u0647 \u062e\u0648\u062f \u0628\u0647 \u062f\u0633\u062a \u0645\u06cc \u0622\u0648\u0631\u06cc\u0645 \u0648 \u0628\u0647 \u0633\u0627\u062f\u06af\u06cc \u06a9\u0648\u0626\u0631\u06cc \u062d\u0630\u0641 \u0631\u0627 \u0627\u062c\u0631\u0627 \u0645\u06cc \u06a9\u0646\u06cc\u0645 \u0648 \u0647\u0631 \u06af\u0648\u0646\u0647 \u062e\u0637\u0627\u06cc \u0631\u062e \u062f\u0627\u062f\u0647 \u0631\u0627 \u0645\u062f\u06cc\u0631\u06cc\u062a \u0645\u06cc \u06a9\u0646\u06cc\u0645:<\/p>\n<p>fn get_pet_from_db(db_con: ArcMutex&gt;, pet_id: i64) -&gt; Resultoption&gt; {<br \/>\n    let con = db_con<br \/>\n        .lock()<br \/>\n        .map_err(|_| anyhow!(&#8220;error while locking db connection&#8221;))?;<br \/>\n    let mut stmt = con.prepare(GET_PET_BY_ID)?;<br \/>\n    stmt.bind((1, pet_id))?;<\/p>\n<p>    if stmt.next()? == sqlite::State::Row {<br \/>\n        let id = stmt.read::i64, _&gt;(0)?;<br \/>\n        let name = stmt.read::String, _&gt;(1)?;<br \/>\n        let age = stmt.read::i64, _&gt;(2)?;<br \/>\n        let kind = stmt.read::String, _&gt;(3)?;<\/p>\n<p>        return Ok(Some(Pet {<br \/>\n            id,<br \/>\n            name,<br \/>\n            age,<br \/>\n            kind: PetKind(kind),<br \/>\n        }));<br \/>\n    }<br \/>\n    Ok(None)<br \/>\n}<\/p>\n<p>fn get_pets_from_db(db_con: ArcMutex&gt;) -&gt; ResultVec&gt; {<br \/>\n    let con = db_con<br \/>\n        .lock()<br \/>\n        .map_err(|_| anyhow!(&#8220;error while locking db connection&#8221;))?;<br \/>\n    let mut pets: Vec = vec![];<br \/>\n    let mut stmt = con.prepare(GET_PETS)?;<\/p>\n<p>    for row in stmt.iter() {<br \/>\n        let row = row?;<br \/>\n        let id = row.read::i64, _&gt;(0);<br \/>\n        let name = row.read::str, _&gt;(1);<br \/>\n        let age = row.read::i64, _&gt;(2);<br \/>\n        let kind = row.read::str, _&gt;(3);<\/p>\n<p>        pets.push(Pet {<br \/>\n            id,<br \/>\n            name: name.to_owned(),<br \/>\n            age,<br \/>\n            kind: PetKind(kind.to_owned()),<br \/>\n        });<br \/>\n    }<br \/>\n    Ok(pets)<br \/>\n}<\/p>\n<p>    \u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/p>\n<p>    \u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/p>\n<p>\u0648\u0627\u06a9\u0634\u06cc \u06cc\u06a9 \u062d\u06cc\u0648\u0627\u0646 \u062e\u0627\u0646\u06af\u06cc \u0627\u0632 \u067e\u0627\u06cc\u06af\u0627\u0647 \u062f\u0627\u062f\u0647 \u0648 \u0648\u0627\u06a9\u0634\u06cc \u0647\u0645\u0647 \u062d\u06cc\u0648\u0627\u0646\u0627\u062a \u062e\u0627\u0646\u06af\u06cc \u06a9\u0627\u0645\u0644\u0627\u064b \u0645\u0634\u0627\u0628\u0647 \u0647\u0633\u062a\u0646\u062f. \u062f\u0631 \u0647\u0631 \u062f\u0648 \u0645\u0648\u0631\u062f\u060c \u0645\u0627 \u062f\u0648\u0628\u0627\u0631\u0647 \u06cc\u06a9 \u0642\u0641\u0644 \u0628\u0631\u0627\u06cc \u0627\u062a\u0635\u0627\u0644 \u067e\u0627\u06cc\u06af\u0627\u0647 \u062f\u0627\u062f\u0647 \u0645\u06cc \u06af\u06cc\u0631\u06cc\u0645\u060c \u062f\u0633\u062a\u0648\u0631 \u0631\u0627 \u0628\u0627 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 \u067e\u0631\u0633 \u0648 \u062c\u0648 \u0622\u0645\u0627\u062f\u0647 \u0645\u06cc \u06a9\u0646\u06cc\u0645\u060c \u067e\u0631\u0633 \u0648 \u062c\u0648 \u0631\u0627 \u0627\u062c\u0631\u0627 \u0645\u06cc \u06a9\u0646\u06cc\u0645 \u0648 \u062f\u0627\u062f\u0647 \u0647\u0627\u06cc \u062e\u0631\u0648\u062c\u06cc \u062e\u0648\u062f \u0631\u0627 \u0627\u0632 \u062f\u0627\u062f\u0647 \u0647\u0627\u06cc \u0631\u062f\u06cc\u0641 \u0647\u0627\u06cc \u0628\u0631\u06af\u0634\u062a\u06cc \u0645\u06cc \u0633\u0627\u0632\u06cc\u0645. <\/p>\n<p>\u0627\u06cc\u0646 \u0628\u0631\u0627\u06cc \u0645\u062f\u0644 \u062f\u0627\u062f\u0647 \u0645\u0627 \u0648 \u062f\u0633\u062a\u0631\u0633\u06cc \u0628\u0647 \u062f\u0627\u062f\u0647 \u0627\u0633\u062a! <\/p>\n<p>\u062f\u0631 \u0628\u0627\u0644\u0627 \u0630\u06a9\u0631 \u06a9\u0631\u062f\u06cc\u0645 \u06a9\u0647 \u0645\u06cc\u200c\u062e\u0648\u0627\u0647\u06cc\u0645 \u062a\u0635\u0627\u0648\u06cc\u0631 \u062a\u0635\u0627\u062f\u0641\u06cc \u0631\u0627 \u0628\u0631\u0627\u06cc \u06af\u0631\u0628\u0647\u200c\u0647\u0627 \u0648 \u0633\u06af\u200c\u0647\u0627 \u0648\u0627\u06a9\u0634\u06cc \u06a9\u0646\u06cc\u0645 \u062a\u0627 \u0628\u0631\u0646\u0627\u0645\u0647 \u06a9\u0645\u06cc \u0632\u0646\u062f\u0647\u200c\u062a\u0631 \u0628\u0647 \u0646\u0638\u0631 \u0628\u0631\u0633\u062f\u060c \u0628\u0646\u0627\u0628\u0631\u0627\u06cc\u0646 \u0628\u06cc\u0627\u06cc\u06cc\u062f \u0622\u0646 \u0642\u0633\u0645\u062a \u0631\u0627 \u062f\u0631 \u0627\u062f\u0627\u0645\u0647 \u067e\u06cc\u0627\u062f\u0647\u200c\u0633\u0627\u0632\u06cc \u06a9\u0646\u06cc\u0645.<\/p>\n<p>  \u0648\u0627\u06a9\u0634\u06cc \u062a\u0635\u0627\u0648\u06cc\u0631 \u062a\u0635\u0627\u062f\u0641\u06cc \u0628\u0631\u0627\u06cc \u06af\u0631\u0628\u0647 \u0647\u0627 \u0648 \u0633\u06af \u0647\u0627<\/p>\n<p>\u0628\u0631\u0627\u06cc \u0648\u0627\u06a9\u0634\u06cc \u062a\u0635\u0627\u0648\u06cc\u0631 \u0633\u06af\u060c \u0627\u0632 https:\/\/dog.ceo\/api\/breeds\/image\/random \u0648 \u0628\u0631\u0627\u06cc \u06af\u0631\u0628\u0647 \u0647\u0627 \u0627\u0632 https:\/\/api.thecatapi.com\/v1\/images\/search \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc \u06a9\u0646\u06cc\u0645. <\/p>\n<p>\u0647\u0631 \u062f\u0648\u06cc \u0627\u06cc\u0646 API\u0647\u0627 \u0628\u0647 \u0645\u0627 \u0627\u062c\u0627\u0632\u0647 \u0645\u06cc\u200c\u062f\u0647\u0646\u062f \u0686\u0646\u062f \u067e\u0631\u0633\u200c\u0648\u062c\u0648 \u0631\u0627 \u0631\u0627\u06cc\u06af\u0627\u0646 \u0627\u0646\u062c\u0627\u0645 \u062f\u0647\u06cc\u0645\u060c \u06a9\u0647 \u0628\u0631\u0627\u06cc \u0622\u0632\u0645\u0627\u06cc\u0634 \u062e\u0648\u0628 \u0627\u0633\u062a. \u0627\u06af\u0631 \u0686\u0646\u062f \u062f\u0631\u062e\u0648\u0627\u0633\u062a \u0622\u0632\u0645\u0627\u06cc\u0634\u06cc \u0627\u0646\u062c\u0627\u0645 \u062f\u0647\u06cc\u0645\u060c \u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u06cc\u0645 \u0628\u0628\u06cc\u0646\u06cc\u0645 \u06a9\u0647 \u062f\u0627\u062f\u0647\u200c\u0647\u0627\u06cc \u0628\u0631\u06af\u0634\u062a\u06cc \u0686\u06af\u0648\u0646\u0647 \u0628\u0647 \u0646\u0638\u0631 \u0645\u06cc\u200c\u0631\u0633\u0646\u062f\u060c \u0648 \u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u06cc\u0645 \u06cc\u06a9 \u0645\u062f\u0644 \u062f\u0627\u062f\u0647 \u0628\u0631\u0627\u06cc \u067e\u0627\u0633\u062e\u200c\u0647\u0627\u06cc JSON \u0647\u0631 \u062f\u0648 API \u0627\u06cc\u062c\u0627\u062f \u06a9\u0646\u06cc\u0645:<\/p>\n<p>#[derive(Debug, Deserialize)]\nstruct CatJSON {<br \/>\n    #[serde(alias = &#8220;0&#8221;)]\n    item: CatJSONInner,<br \/>\n}<\/p>\n<p>#[derive(Debug, Deserialize)]\nstruct CatJSONInner {<br \/>\n    url: String,<br \/>\n}<\/p>\n<p>#[derive(Debug, Deserialize)]\nstruct DogJSON {<br \/>\n    message: String,<br \/>\n}<\/p>\n<p>    \u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/p>\n<p>    \u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/p>\n<p>\u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc \u06a9\u0646\u06cc\u0645 serde::Deserialize \u062a\u0627 \u0628\u062a\u0648\u0627\u0646\u06cc\u0645 JSON \u0628\u0631\u06af\u0631\u062f\u0627\u0646\u062f\u0647 \u0634\u062f\u0647 \u0631\u0627 \u0628\u0647 \u0627\u0646\u0648\u0627\u0639 \u062e\u0648\u062f \u063a\u06cc\u0631 \u0633\u0631\u06cc\u0627\u0644\u06cc \u06a9\u0646\u06cc\u0645. \u0645\u0631\u062d\u0644\u0647 \u0628\u0639\u062f\u06cc \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 ehttp \u0628\u0631\u0627\u06cc \u0627\u06cc\u062c\u0627\u062f \u06cc\u06a9 \u062f\u0631\u062e\u0648\u0627\u0633\u062a HTTP \u0628\u0647 API \u0647\u0627\u06cc \u0645\u0631\u0628\u0648\u0637\u0647\u060c \u062a\u062c\u0632\u06cc\u0647 \u067e\u0627\u0633\u062e \u0648 \u0645\u062f\u06cc\u0631\u06cc\u062a URL \u0647\u0627\u06cc\u06cc \u06a9\u0647 \u062f\u0631\u06cc\u0627\u0641\u062a \u0645\u06cc \u06a9\u0646\u06cc\u0645:<\/p>\n<p>fn fetch_pet_image(ctx: egui::Context, pet_kind: PetKind, sender: Sender) {<br \/>\n    let url = if pet_kind.0 == &#8220;dog&#8221; {<br \/>\n        &#8220;https:\/\/dog.ceo\/api\/breeds\/image\/random&#8221;<br \/>\n    } else {<br \/>\n        &#8220;https:\/\/api.thecatapi.com\/v1\/images\/search&#8221;<br \/>\n    };<br \/>\n    ehttp::fetch(<br \/>\n        ehttp::Request::get(url),<br \/>\n        move |result: ehttp::Result| {<br \/>\n            if let Ok(result) = result {<br \/>\n                let image_url = if pet_kind.0 == &#8220;dog&#8221; {<br \/>\n                    if let Ok(json) = result.json::() {<br \/>\n                        Some(json.message)<br \/>\n                    } else {<br \/>\n                        None<br \/>\n                    }<br \/>\n                } else if let Ok(json) = result.json::() {<br \/>\n                    Some(json.item.url)<br \/>\n                } else {<br \/>\n                    None<br \/>\n                };<br \/>\n                let _ = sender.send(Event::SetPetImage(image_url));<br \/>\n                ctx.request_repaint();<br \/>\n            }<br \/>\n        },<br \/>\n    );<br \/>\n}<\/p>\n<p>    \u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/p>\n<p>    \u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/p>\n<p>\u0627\u06af\u0631 \u0628\u0647 \u0627\u0645\u0636\u0627\u06cc \u062a\u0627\u0628\u0639 \u0646\u06af\u0627\u0647 \u06a9\u0646\u06cc\u0645\u060c \u0645\u06cc \u0628\u06cc\u0646\u06cc\u0645 egui::Context\u060c PetKind\u060c \u0648 Sender. \u0627\u06cc\u0646\u0647\u0627 \u0686\u06cc\u0633\u062a \u0648 \u0645\u0627 \u0628\u0631\u0627\u06cc \u0686\u0647 \u0628\u0647 \u0622\u0646\u0647\u0627 \u0646\u06cc\u0627\u0632 \u062f\u0627\u0631\u06cc\u0645\u061f <\/p>\n<p>\u0645\u0627 \u0646\u06cc\u0627\u0632 \u062f\u0627\u0631\u06cc\u0645 egui::Context \u0628\u0631\u0627\u06cc \u062f\u0631\u062e\u0648\u0627\u0633\u062a \u0631\u0646\u06af \u0622\u0645\u06cc\u0632\u06cc \u0645\u062c\u062f\u062f \u0631\u0627\u0628\u0637 \u06a9\u0627\u0631\u0628\u0631\u06cc \u06af\u0631\u0627\u0641\u06cc\u06a9\u06cc\u060c \u067e\u0633 \u0627\u0632 \u0627\u062a\u0645\u0627\u0645 \u0648\u0627\u06a9\u0634\u06cc \u062f\u0627\u062f\u0647 \u0647\u0627\u06cc \u062e\u0648\u062f. \u0627\u06cc\u0646 \u0645\u0639\u0627\u062f\u0644 \u0627\u06cc\u0646 \u0627\u0633\u062a \u06a9\u0647 \u0628\u0647 \u0631\u0634\u062a\u0647 \u0631\u0646\u062f\u0631 \u0627\u0637\u0644\u0627\u0639 \u062f\u0647\u06cc\u0645 \u06a9\u0647 \u062f\u0627\u062f\u0647 \u0647\u0627\u06cc \u062c\u062f\u06cc\u062f\u06cc \u062f\u0627\u0631\u06cc\u0645 \u0648 \u0628\u0631\u0627\u06cc \u0646\u0645\u0627\u06cc\u0634 \u0622\u0646 \u062f\u0627\u062f\u0647 \u0647\u0627 \u0628\u0627\u06cc\u062f \u062f\u0648\u0628\u0627\u0631\u0647 \u0631\u0646\u062f\u0631 \u0634\u0648\u062f. \u062f\u0631 \u063a\u06cc\u0631 \u0627\u06cc\u0646 \u0635\u0648\u0631\u062a\u060c \u0627\u06af\u0631 \u0647\u06cc\u0686 \u062a\u0639\u0627\u0645\u0644\u06cc \u0627\u062a\u0641\u0627\u0642 \u0646\u06cc\u0641\u062a\u0627\u062f\u060c \u0645\u0645\u06a9\u0646 \u0627\u0633\u062a \u0631\u0627\u0628\u0637 \u06a9\u0627\u0631\u0628\u0631\u06cc \u062b\u0627\u0628\u062a \u0628\u0645\u0627\u0646\u062f \u062a\u0627 \u0639\u0645\u0631 \u0628\u0627\u062a\u0631\u06cc \u062d\u0641\u0638 \u0634\u0648\u062f \u0648 \u062f\u0627\u062f\u0647\u200c\u0647\u0627\u06cc \u062c\u062f\u06cc\u062f \u0631\u0627 \u0646\u0634\u0627\u0646 \u0646\u062f\u0647\u062f. <\/p>\n<p>\u0627\u06cc\u0646 PetKind \u0635\u0631\u0641\u0627\u064b \u0628\u0631\u0627\u06cc \u0628\u0631\u0631\u0633\u06cc \u0627\u06cc\u0646 \u0627\u0633\u062a \u06a9\u0647 \u0622\u06cc\u0627 \u0645\u0627 \u06cc\u06a9 \u062a\u0635\u0648\u06cc\u0631 \u0628\u0631\u0627\u06cc \u06cc\u06a9 \u06af\u0631\u0628\u0647 \u06cc\u0627 \u06cc\u06a9 \u0633\u06af \u0648\u0627\u06a9\u0634\u06cc \u0645\u06cc \u06a9\u0646\u06cc\u0645 Sender \u0642\u0633\u0645\u062a \u0627\u0631\u0633\u0627\u0644 \u0627\u0644\u0641 \u0627\u0633\u062a std::sync::mpsc \u06a9\u0627\u0646\u0627\u0644\u060c \u06a9\u0647 \u0628\u0647 \u0645\u0627 \u0627\u0645\u06a9\u0627\u0646 \u0645\u06cc\u200c\u062f\u0647\u062f \u062f\u0627\u062f\u0647\u200c\u0647\u0627 \u0631\u0627 \u0628\u0647 \u0631\u0634\u062a\u0647 \u0631\u0646\u062f\u0631 \u0627\u0635\u0644\u06cc \u0627\u0631\u0633\u0627\u0644 \u06a9\u0646\u06cc\u0645\u060c \u06a9\u0647 \u0633\u067e\u0633 \u0645\u06cc\u200c\u062a\u0648\u0627\u0646 \u0622\u0646\u200c\u0647\u0627 \u0631\u0627 \u0627\u0632 \u0622\u0646\u062c\u0627 \u062f\u0631\u06cc\u0627\u0641\u062a \u0648 \u0645\u062f\u06cc\u0631\u06cc\u062a \u06a9\u0631\u062f. <\/p>\n<p>\u062f\u0631 \u0628\u062e\u0634 \u0628\u0639\u062f\u06cc \u0646\u06af\u0627\u0647\u06cc \u0628\u0647 \u0646\u062d\u0648\u0647 \u0639\u0645\u0644\u06a9\u0631\u062f \u0627\u06cc\u0646 \u0645\u06a9\u0627\u0646\u06cc\u0633\u0645 \u0645\u062f\u06cc\u0631\u06cc\u062a \u0631\u0648\u06cc\u062f\u0627\u062f \u062e\u0648\u0627\u0647\u06cc\u0645 \u062f\u0627\u0634\u062a.<\/p>\n<p>  \u0631\u0633\u06cc\u062f\u06af\u06cc \u0628\u0647 \u0631\u0648\u06cc\u062f\u0627\u062f<\/p>\n<p>\u0647\u0645\u0627\u0646\u0637\u0648\u0631 \u06a9\u0647 \u062f\u0631 \u0628\u0627\u0644\u0627 \u0630\u06a9\u0631 \u0634\u062f\u060c \u0645\u0627 \u0628\u0647 \u0631\u0627\u0647\u06cc \u0628\u0631\u0627\u06cc \u0648\u0627\u06a9\u0634\u06cc \u0646\u0627\u0647\u0645\u0632\u0645\u0627\u0646 \u062f\u0627\u062f\u0647 \u0647\u0627 \u0628\u062f\u0648\u0646 \u0645\u0633\u062f\u0648\u062f \u06a9\u0631\u062f\u0646 \u0631\u0634\u062a\u0647 \u0631\u0646\u062f\u0631 \u0627\u0635\u0644\u06cc \u0646\u06cc\u0627\u0632 \u062f\u0627\u0631\u06cc\u0645. \u0628\u0627 \u0627\u06cc\u0646 \u062d\u0627\u0644\u060c \u0645\u0627 \u0647\u0645\u0686\u0646\u06cc\u0646 \u0628\u0647 \u0631\u0627\u0647\u06cc \u0628\u0631\u0627\u06cc \u0628\u0631\u0642\u0631\u0627\u0631\u06cc \u0627\u0631\u062a\u0628\u0627\u0637 \u0628\u06cc\u0646 \u0627\u06cc\u0646 \u0631\u0634\u062a\u0647 \u067e\u0633\u200c\u0632\u0645\u06cc\u0646\u0647 \u0648 \u0645\u0648\u0636\u0648\u0639 \u0627\u0635\u0644\u06cc \u0646\u06cc\u0627\u0632 \u062f\u0627\u0631\u06cc\u0645. \u0628\u0631\u0627\u06cc \u0627\u06cc\u0646 \u0645\u0646\u0638\u0648\u0631 \u0627\u0632 \u062f\u0648 \u0645\u0648\u0631\u062f \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc \u06a9\u0646\u06cc\u0645 std::sync::mpsc \u06a9\u0627\u0646\u0627\u0644\u200c\u0647\u0627 &#8211; \u06cc\u06a9\u06cc \u0628\u0631\u0627\u06cc \u0627\u0631\u0633\u0627\u0644 \u0631\u0648\u06cc\u062f\u0627\u062f\u0647\u0627 \u0628\u0647 \u0631\u0634\u062a\u0647 \u067e\u0633\u200c\u0632\u0645\u06cc\u0646\u0647 \u0648 \u062f\u0631\u06cc\u0627\u0641\u062a \u0622\u0646\u200c\u0647\u0627 \u062f\u0631 \u0622\u0646\u062c\u0627\u060c \u0648 \u062f\u06cc\u06af\u0631\u06cc \u0628\u0631\u0627\u06cc \u0627\u0631\u0633\u0627\u0644 \u0645\u062c\u062f\u062f \u062f\u0627\u062f\u0647\u200c\u0647\u0627 \u0628\u0647 \u0631\u0634\u062a\u0647 \u0627\u0635\u0644\u06cc \u0648 \u062f\u0631\u06cc\u0627\u0641\u062a \u062f\u0627\u062f\u0647\u200c\u0647\u0627 \u062f\u0631 \u0622\u0646\u062c\u0627:<\/p>\n<p>fn main() -&gt; Result()&gt; {<br \/>\n    &#8230;<br \/>\n    let (background_event_sender, background_event_receiver) = channel::();<br \/>\n    let (event_sender, event_receiver) = channel::();<br \/>\n    &#8230;<br \/>\n    std::thread::spawn(move || {<br \/>\n        while let Ok(event) = background_event_receiver.recv() {<br \/>\n            let sender = event_sender.clone();<br \/>\n            handle_events(event, sender);<br \/>\n        }<br \/>\n    });<br \/>\n    &#8230;<br \/>\n}<\/p>\n<p>    \u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/p>\n<p>    \u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/p>\n<p>\u062f\u0631 main \u062a\u0627\u0628\u0639\u060c \u0645\u0627 \u062f\u0648 \u06a9\u0627\u0646\u0627\u0644 \u0631\u0627 \u0627\u06cc\u062c\u0627\u062f \u0645\u06cc \u06a9\u0646\u06cc\u0645\u060c \u0647\u0631 \u06a9\u062f\u0627\u0645 \u0628\u0627 \u0622\u0646\u0647\u0627 Sender \u0648 Receiver \u0628\u0647 \u067e\u0627\u06cc\u0627\u0646 \u0645\u06cc \u0631\u0633\u062f. <\/p>\n<p>\u0633\u067e\u0633\u060c \u0645\u0627 \u06cc\u06a9 \u0631\u0634\u062a\u0647 \u062c\u062f\u06cc\u062f \u0627\u06cc\u062c\u0627\u062f \u0645\u06cc \u06a9\u0646\u06cc\u0645 &#8211; \u0631\u0634\u062a\u0647 \u067e\u0633 \u0632\u0645\u06cc\u0646\u0647 \u0645\u0627 &#8211; \u0648 \u062f\u0631 \u0622\u0646\u060c \u0645\u0646\u062a\u0638\u0631 \u0631\u0648\u06cc\u062f\u0627\u062f\u0647\u0627\u06cc\u06cc \u062f\u0631 background_event_receiver \u0648 \u0628\u0631\u0627\u06cc \u0647\u0631 \u0631\u0648\u06cc\u062f\u0627\u062f\u060c \u0631\u0648\u06cc\u062f\u0627\u062f \u0631\u0627 \u0645\u062f\u06cc\u0631\u06cc\u062a \u06a9\u0646\u06cc\u062f \u0648 \u062f\u0627\u062f\u0647 \u0647\u0627 \u0631\u0627 \u0628\u0627 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 \u0622\u0646 \u0628\u0647 \u0631\u0634\u062a\u0647 \u0627\u0635\u0644\u06cc \u0627\u0631\u0633\u0627\u0644 \u06a9\u0646\u06cc\u062f event_sender\u060c Sender \u0628\u062e\u0634\u06cc \u0627\u0632 \u06a9\u0627\u0646\u0627\u0644 \u062a\u0627\u067e\u06cc\u06a9 \u0627\u0635\u0644\u06cc <\/p>\n<p>\u062f\u0631 \u0645\u0631\u062d\u0644\u0647 \u0628\u0639\u062f\u060c \u0645\u0627 \u0631\u0627 \u062a\u0639\u0631\u06cc\u0641 \u0645\u06cc \u06a9\u0646\u06cc\u0645 Event type\u060c \u06a9\u0647 \u06cc\u06a9 enum \u0627\u0633\u062a \u06a9\u0647 \u0634\u0627\u0645\u0644 \u062a\u0645\u0627\u0645 \u0627\u0646\u0648\u0627\u0639 \u0631\u0648\u06cc\u062f\u0627\u062f\u0647\u0627\u06cc \u0645\u062e\u062a\u0644\u0641 \u0627\u0633\u062a \u06a9\u0647 \u062f\u0631 \u0628\u0631\u0646\u0627\u0645\u0647 \u0628\u0647 \u0622\u0646 \u0646\u06cc\u0627\u0632 \u062f\u0627\u0631\u06cc\u0645:<\/p>\n<p>enum Event {<br \/>\n    SetPets(Vec),<br \/>\n    GetPetImage(egui::Context, PetKind),<br \/>\n    SetPetImage(Option),<br \/>\n    GetPetFromDB(egui::Context, ArcMutex&gt;, i64),<br \/>\n    SetSelectedPet(Option),<br \/>\n    InsertPetToDB(egui::Context, ArcMutex&gt;, Pet),<br \/>\n    DeletePetFromDB(egui::Context, ArcMutex&gt;, i64),<br \/>\n}<\/p>\n<p>    \u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/p>\n<p>    \u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/p>\n<p>    SetPets &#8211; \u0644\u06cc\u0633\u062a \u062c\u062f\u06cc\u062f\u06cc \u0627\u0632 \u062d\u06cc\u0648\u0627\u0646\u0627\u062a \u062e\u0627\u0646\u06af\u06cc \u0648\u0627\u06a9\u0634\u06cc \u0634\u062f\u0647 \u0631\u0627 \u062f\u0631 AppState \u0628\u0631\u0646\u0627\u0645\u0647 \u062a\u0646\u0638\u06cc\u0645 \u0645\u06cc \u06a9\u0646\u062f<br \/>\n    GetPetImage &#8211; \u06cc\u06a9 \u062a\u0635\u0648\u06cc\u0631 \u062a\u0635\u0627\u062f\u0641\u06cc \u062c\u062f\u06cc\u062f \u0628\u0631\u0627\u06cc \u06cc\u06a9 \u0646\u0648\u0639 \u0645\u0639\u06cc\u0646 \u0627\u0632 \u062d\u06cc\u0648\u0627\u0646 \u062e\u0627\u0646\u06af\u06cc \u062f\u0631\u06cc\u0627\u0641\u062a \u0645\u06cc \u06a9\u0646\u062f<br \/>\n    SetPetImage &#8211; \u062a\u0635\u0648\u06cc\u0631 \u062d\u06cc\u0648\u0627\u0646 \u062e\u0627\u0646\u06af\u06cc \u0648\u0627\u06a9\u0634\u06cc \u0634\u062f\u0647 \u0631\u0627 \u062f\u0631 AppState \u062a\u0646\u0638\u06cc\u0645 \u0645\u06cc \u06a9\u0646\u062f<br \/>\n    GetPetFromDB &#8211; \u06cc\u06a9 \u062d\u06cc\u0648\u0627\u0646 \u062e\u0627\u0646\u06af\u06cc \u0628\u0627 \u0634\u0646\u0627\u0633\u0647 \u062f\u0627\u062f\u0647 \u0634\u062f\u0647 (i64) \u0631\u0627 \u0627\u0632 \u067e\u0627\u06cc\u06af\u0627\u0647 \u062f\u0627\u062f\u0647 \u0648\u0627\u06a9\u0634\u06cc \u0645\u06cc \u06a9\u0646\u062f<br \/>\n    SetSelectedPet \u2014 \u062d\u06cc\u0648\u0627\u0646 \u062e\u0627\u0646\u06af\u06cc \u0627\u0646\u062a\u062e\u0627\u0628 \u0634\u062f\u0647 \u0631\u0627 \u062f\u0631 AppState \u0628\u0631\u0646\u0627\u0645\u0647 \u062a\u0646\u0638\u06cc\u0645 \u0645\u06cc \u06a9\u0646\u062f<br \/>\n    InsertPetToDB &#8211; \u06cc\u06a9 \u062d\u06cc\u0648\u0627\u0646 \u062e\u0627\u0646\u06af\u06cc \u062c\u062f\u06cc\u062f \u0628\u0647 \u067e\u0627\u06cc\u06af\u0627\u0647 \u062f\u0627\u062f\u0647 \u0627\u0636\u0627\u0641\u0647 \u0645\u06cc \u06a9\u0646\u062f<br \/>\n    DeletePetFromDB &#8211; \u06cc\u06a9 \u062d\u06cc\u0648\u0627\u0646 \u062e\u0627\u0646\u06af\u06cc \u0631\u0627 \u0627\u0632 \u067e\u0627\u06cc\u06af\u0627\u0647 \u062f\u0627\u062f\u0647 \u062d\u0630\u0641 \u0645\u06cc \u06a9\u0646\u062f<\/p>\n<p>\u0633\u067e\u0633\u060c \u0645\u0627 \u0622\u0646 \u0631\u0627 \u0627\u062c\u0631\u0627 \u0645\u06cc \u06a9\u0646\u06cc\u0645 handle_events \u062a\u0627\u0628\u0639\u06cc \u06a9\u0647 \u062f\u0631 \u062f\u0627\u062e\u0644 \u0631\u0634\u062a\u0647 \u067e\u0633 \u0632\u0645\u06cc\u0646\u0647 \u0641\u0631\u0627\u062e\u0648\u0627\u0646\u06cc \u0645\u06cc \u0634\u0648\u062f:<\/p>\n<p>fn handle_events(event: Event, sender: Sender) {<br \/>\n    match event {<br \/>\n        Event::GetPetImage(ctx, pet_kind) =&gt; {<br \/>\n            fetch_pet_image(ctx, pet_kind, sender);<br \/>\n        }<br \/>\n        Event::GetPetFromDB(ctx, db_con, pet_id) =&gt; {<br \/>\n            if let Ok(Some(pet)) = get_pet_from_db(db_con, pet_id) {<br \/>\n                let _ = sender.send(Event::SetSelectedPet(Some(pet)));<br \/>\n                ctx.request_repaint();<br \/>\n            }<br \/>\n        }<br \/>\n        Event::DeletePetFromDB(ctx, db_con, pet_id) =&gt; {<br \/>\n            if delete_pet_from_db(db_con.clone(), pet_id).is_ok() {<br \/>\n                if let Ok(pets) = get_pets_from_db(db_con) {<br \/>\n                    let _ = sender.send(Event::SetPets(pets));<br \/>\n                    ctx.request_repaint();<br \/>\n                }<br \/>\n            }<br \/>\n        }<br \/>\n        Event::InsertPetToDB(ctx, db_con, pet) =&gt; {<br \/>\n            if let Ok(new_pet) = insert_pet_to_db(db_con.clone(), pet) {<br \/>\n                if let Ok(pets) = get_pets_from_db(db_con) {<br \/>\n                    let _ = sender.send(Event::SetPets(pets));<br \/>\n                    let _ = sender.send(Event::SetSelectedPet(Some(new_pet)));<br \/>\n                    ctx.request_repaint();<br \/>\n                }<br \/>\n            }<br \/>\n        }<br \/>\n        _ =&gt; (),<br \/>\n    }<br \/>\n}<\/p>\n<p>    \u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/p>\n<p>    \u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/p>\n<p>\u0645\u0627 \u0628\u0627 \u0631\u0648\u06cc\u062f\u0627\u062f \u0648\u0631\u0648\u062f\u06cc \u0645\u0637\u0627\u0628\u0642\u062a \u0645\u06cc \u062f\u0647\u06cc\u0645\u060c \u062f\u0627\u062f\u0647 \u0647\u0627 \u0631\u0627 \u0648\u0627\u06a9\u0634\u06cc \u0645\u06cc \u06a9\u0646\u06cc\u0645\u060c \u062f\u0627\u062f\u0647 \u0647\u0627 \u0631\u0627 \u0628\u0627 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 \u0622\u0646 \u0627\u0631\u0633\u0627\u0644 \u0645\u06cc \u06a9\u0646\u06cc\u0645 Sender\u060c \u0648 \u062a\u0645\u0627\u0633 \u0628\u06af\u06cc\u0631\u06cc\u062f ctx.request_repaint() \u0628\u0631\u0627\u06cc \u0631\u0627\u0647 \u0627\u0646\u062f\u0627\u0632\u06cc \u0628\u0647 \u0631\u0648\u0632 \u0631\u0633\u0627\u0646\u06cc \u062c\u062f\u06cc\u062f \u062f\u0631 \u0645\u0648\u0636\u0648\u0639 \u0631\u0646\u062f\u0631. <\/p>\n<p>\u062f\u0631 \u0645\u0648\u0631\u062f \u062d\u0630\u0641 \u06cc\u06a9 \u062d\u06cc\u0648\u0627\u0646 \u062e\u0627\u0646\u06af\u06cc\u060c \u0644\u06cc\u0633\u062a \u062c\u062f\u06cc\u062f\u06cc \u0627\u0632 \u062d\u06cc\u0648\u0627\u0646\u0627\u062a \u062e\u0627\u0646\u06af\u06cc \u0631\u0627 \u0627\u0632 \u067e\u0627\u06cc\u06af\u0627\u0647 \u062f\u0627\u062f\u0647 \u062f\u0631\u06cc\u0627\u0641\u062a \u0645\u06cc \u06a9\u0646\u06cc\u0645\u060c \u0628\u0646\u0627\u0628\u0631\u0627\u06cc\u0646 \u062a\u063a\u06cc\u06cc\u0631 \u062f\u0631 \u0644\u06cc\u0633\u062a \u0646\u0645\u0627\u06cc\u0634 \u062f\u0627\u062f\u0647 \u0634\u062f\u0647 \u0645\u0646\u0639\u06a9\u0633 \u0645\u06cc \u0634\u0648\u062f. \u0628\u0631\u0627\u06cc \u0642\u0631\u0627\u0631 \u062f\u0627\u062f\u0646 \u062d\u06cc\u0648\u0627\u0646 \u062e\u0627\u0646\u06af\u06cc \u062c\u062f\u06cc\u062f \u0646\u06cc\u0632 \u0647\u0645\u06cc\u0646 \u06a9\u0627\u0631 \u0631\u0627 \u0627\u0646\u062c\u0627\u0645 \u0645\u06cc \u062f\u0647\u06cc\u0645 \u0648 \u0622\u0646 \u0631\u0627 \u0646\u06cc\u0632 \u062a\u0646\u0638\u06cc\u0645 \u0645\u06cc \u06a9\u0646\u06cc\u0645 selected_pet \u062f\u0631 AppState \u0628\u0647 \u062d\u06cc\u0648\u0627\u0646 \u062e\u0627\u0646\u06af\u06cc \u062a\u0627\u0632\u0647 \u0627\u06cc\u062c\u0627\u062f \u0634\u062f\u0647\u060c \u0627\u0632 \u0627\u06cc\u0646 \u0631\u0648 \u062f\u0631 \u0647\u0646\u06af\u0627\u0645 \u0627\u06cc\u062c\u0627\u062f \u0628\u0647 \u0622\u0646 \u067e\u06cc\u0645\u0627\u06cc\u0634 \u06a9\u0646\u06cc\u062f. <\/p>\n<p>\u0627\u06cc\u0646 \u0646\u06cc\u0645\u06cc \u0627\u0632 \u0645\u0646\u0637\u0642 \u0645\u062f\u06cc\u0631\u06cc\u062a \u0631\u0648\u06cc\u062f\u0627\u062f \u0627\u0633\u062a\u060c \u0645\u0646\u0637\u0642\u06cc \u06a9\u0647 \u062f\u0631 \u0631\u0634\u062a\u0647 \u067e\u0633\u200c\u0632\u0645\u06cc\u0646\u0647 \u0627\u0633\u062a. \u0627\u0645\u0627 \u0628\u0627\u06cc\u062f \u06cc\u06a9 \u0647\u0645\u062a\u0627 \u062f\u0631 \u0631\u0634\u062a\u0647 \u0631\u0646\u062f\u0631 \u0648\u062c\u0648\u062f \u062f\u0627\u0634\u062a\u0647 \u0628\u0627\u0634\u062f \u06a9\u0647 \u06a9\u0627\u0646\u0627\u0644 \u0631\u0627 \u0628\u0631\u0627\u06cc \u062f\u0627\u062f\u0647 \u0647\u0627\u06cc \u0627\u0631\u0633\u0627\u0644 \u0634\u062f\u0647 \u0627\u0632 \u0631\u0634\u062a\u0647 \u067e\u0633 \u0632\u0645\u06cc\u0646\u0647 \u0628\u0631\u0631\u0633\u06cc \u0645\u06cc \u06a9\u0646\u062f\u060c \u06a9\u0647 \u0633\u067e\u0633 \u0628\u0647 AppState \u0627\u0639\u0645\u0627\u0644 \u0645\u06cc \u0634\u0648\u062f\u060c \u06a9\u0647 \u0628\u0647 \u0646\u0648\u0628\u0647 \u062e\u0648\u062f \u0645\u0646\u062c\u0631 \u0628\u0647 \u0628\u0647 \u0631\u0648\u0632 \u0631\u0633\u0627\u0646\u06cc \u0631\u0627\u0628\u0637 \u06a9\u0627\u0631\u0628\u0631\u06cc \u06af\u0631\u0627\u0641\u06cc\u06a9\u06cc \u0645\u06cc \u0634\u0648\u062f. <\/p>\n<p>\u0627\u06cc\u0646 \u0642\u0633\u0645\u062a \u062f\u0631 handle_gui_events \u062f\u0631 \u062f\u0627\u062e\u0644 PetApp \u0646\u0648\u0639\u060c \u06a9\u0647 \u062f\u0631 \u0628\u062e\u0634 \u0628\u0639\u062f\u06cc \u0648 \u0622\u062e\u0631 \u0628\u0627 \u0622\u0646 \u0622\u0634\u0646\u0627 \u062e\u0648\u0627\u0647\u06cc\u0645 \u0634\u062f:<\/p>\n<p>    fn handle_gui_events(&amp;mut self) {<br \/>\n        while let Ok(event) = self.event_receiver.try_recv() {<br \/>\n            match event {<br \/>\n                Event::SetPetImage(pet_image) =&gt; {<br \/>\n                    self.app_state.pet_image = pet_image;<br \/>\n                }<br \/>\n                Event::SetSelectedPet(pet) =&gt; self.app_state.selected_pet = pet,<br \/>\n                Event::SetPets(pets) =&gt; {<br \/>\n                    if let Some(ref selected_pet) = self.app_state.selected_pet {<br \/>\n                        if !pets.iter().any(|p| p.id == selected_pet.id) {<br \/>\n                            self.app_state.selected_pet = None;<br \/>\n                        }<br \/>\n                    }<br \/>\n                    self.app_state.pets = pets;<br \/>\n                }<br \/>\n                _ =&gt; (),<br \/>\n            };<br \/>\n        }<br \/>\n    }<\/p>\n<p>    \u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/p>\n<p>    \u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/p>\n<p>\u062f\u0648\u0628\u0627\u0631\u0647\u060c \u0645\u0627 \u0631\u0648\u06cc \u0647\u0645\u0647 \u0631\u0648\u06cc\u062f\u0627\u062f\u0647\u0627\u06cc \u062f\u0631\u06cc\u0627\u0641\u062a\u06cc \u062a\u06a9\u0631\u0627\u0631 \u0645\u06cc \u06a9\u0646\u06cc\u0645 \u0648 \u0628\u0627 \u0622\u0646\u0647\u0627 \u0645\u0637\u0627\u0628\u0642\u062a \u0645\u06cc \u06a9\u0646\u06cc\u0645. \u0628\u0631\u0627\u06cc \u0647\u0631 \u0631\u0648\u06cc\u062f\u0627\u062f\u060c \u0645\u0627 AppState \u0631\u0627 \u0628\u0647 \u0631\u0648\u0632 \u0645\u06cc \u06a9\u0646\u06cc\u0645. \u062c\u0627\u0644\u0628 \u062a\u0631\u06cc\u0646 \u067e\u06cc\u0627\u062f\u0647 \u0633\u0627\u0632\u06cc \u062f\u0631 \u0627\u0633\u062a SetPets\u060c \u06a9\u0647 \u062f\u0631 \u0622\u0646\u060c \u0627\u06af\u0631 \u062d\u06cc\u0648\u0627\u0646 \u062e\u0627\u0646\u06af\u06cc \u0627\u0646\u062a\u062e\u0627\u0628 \u0634\u062f\u0647 \u0642\u0628\u0644\u06cc \u062f\u06cc\u06af\u0631 \u0628\u062e\u0634\u06cc \u0627\u0632 \u0644\u06cc\u0633\u062a \u0628\u0647 \u0631\u0648\u0632 \u0634\u062f\u0647 \u0646\u0628\u0627\u0634\u062f\u060c \u062d\u06cc\u0648\u0627\u0646 \u062e\u0627\u0646\u06af\u06cc \u0627\u0646\u062a\u062e\u0627\u0628 \u0634\u062f\u0647 \u0631\u0627 \u0628\u0627\u0632\u0646\u0634\u0627\u0646\u06cc \u0645\u06cc \u06a9\u0646\u06cc\u0645. \u0627\u06cc\u0646 \u0645\u0648\u0636\u0648\u0639 \u0645\u0631\u062a\u0628\u0637 \u0627\u0633\u062a \u0632\u06cc\u0631\u0627 \u0627\u06af\u0631 \u062d\u06cc\u0648\u0627\u0646 \u062e\u0627\u0646\u06af\u06cc \u0631\u0627 \u062d\u0630\u0641 \u06a9\u0646\u06cc\u0645 \u0648 \u0627\u06cc\u0646 \u06a9\u0627\u0631 \u0631\u0627 \u0627\u0646\u062c\u0627\u0645 \u0646\u062f\u0647\u06cc\u0645\u060c \u0646\u0645\u0627\u06cc \u062c\u0632\u0626\u06cc\u0627\u062a \u0647\u0645\u0686\u0646\u0627\u0646 \u062d\u06cc\u0648\u0627\u0646 \u062e\u0627\u0646\u06af\u06cc \u062d\u0630\u0641 \u0634\u062f\u0647 \u0631\u0627 \u0646\u0634\u0627\u0646 \u0645\u06cc \u062f\u0647\u062f. <\/p>\n<p>\u062e\u0648\u0628\u060c \u0627\u06a9\u0646\u0648\u0646 \u0645\u062f\u0644 \u062f\u0627\u062f\u0647\u060c \u0645\u0646\u0637\u0642 \u0648\u0627\u06a9\u0634\u06cc \u062a\u0635\u0648\u06cc\u0631 \u0648 \u0645\u06a9\u0627\u0646\u06cc\u0633\u0645 \u0645\u062f\u06cc\u0631\u06cc\u062a \u0631\u0648\u06cc\u062f\u0627\u062f \u0631\u0627 \u062f\u0627\u0631\u06cc\u0645\u060c \u0648 \u062f\u0631 \u0646\u0647\u0627\u06cc\u062a \u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u06cc\u0645 \u0647\u0645\u0647 \u0686\u06cc\u0632 \u0631\u0627 \u0633\u06cc\u0645\u200c\u06a9\u0634\u06cc \u06a9\u0646\u06cc\u0645 \u0648 \u0631\u0627\u0628\u0637 \u06a9\u0627\u0631\u0628\u0631\u06cc \u06af\u0631\u0627\u0641\u06cc\u06a9\u06cc \u062e\u0648\u062f \u0631\u0627 \u0628\u0633\u0627\u0632\u06cc\u0645.<\/p>\n<p>  \u0633\u0627\u062e\u062a \u0631\u0627\u0628\u0637 \u06a9\u0627\u0631\u0628\u0631\u06cc \u06af\u0631\u0627\u0641\u06cc\u06a9\u06cc<\/p>\n<p>\u0633\u0627\u062e\u062a\u0627\u0631 \u0631\u0627\u0628\u0637 \u06a9\u0627\u0631\u0628\u0631\u06cc \u0628\u0647 \u06af\u0648\u0646\u0647 \u0627\u06cc \u0627\u0633\u062a \u06a9\u0647 \u062f\u0631 \u0633\u0645\u062a \u0686\u067e \u067e\u0646\u0644 \u0644\u06cc\u0633\u062a\u06cc \u0648\u062c\u0648\u062f \u062f\u0627\u0631\u062f \u06a9\u0647 \u062f\u06a9\u0645\u0647 \u0627\u0641\u0632\u0648\u062f\u0646 \u062d\u06cc\u0648\u0627\u0646 \u062e\u0627\u0646\u06af\u06cc \u062c\u062f\u06cc\u062f \u0648 \u0647\u0645\u0686\u0646\u06cc\u0646 \u0641\u0631\u0645\u06cc \u0628\u0631\u0627\u06cc \u0627\u0641\u0632\u0648\u062f\u0646 \u062d\u06cc\u0648\u0627\u0646\u0627\u062a \u062e\u0627\u0646\u06af\u06cc \u062c\u062f\u06cc\u062f \u0631\u0627 \u0646\u06af\u0647 \u0645\u06cc \u062f\u0627\u0631\u062f. \u0628\u0627 \u06a9\u0644\u06cc\u06a9 \u0628\u0631 \u0631\u0648\u06cc \u06cc\u06a9 \u062d\u06cc\u0648\u0627\u0646 \u062e\u0627\u0646\u06af\u06cc \u062f\u0631 \u0644\u06cc\u0633\u062a\u060c \u062c\u0632\u0626\u06cc\u0627\u062a \u0622\u0646 \u062d\u06cc\u0648\u0627\u0646 \u062e\u0627\u0646\u06af\u06cc \u0648 \u06cc\u06a9 \u062a\u0635\u0648\u06cc\u0631 \u062a\u0635\u0627\u062f\u0641\u06cc \u0628\u0631\u0627\u06cc \u062d\u06cc\u0648\u0627\u0646 \u062e\u0627\u0646\u06af\u06cc \u062f\u0631 \u067e\u0646\u0644 \u062c\u0632\u0626\u06cc\u0627\u062a \u062f\u0631 \u0633\u0645\u062a \u0631\u0627\u0633\u062a UI \u0646\u0634\u0627\u0646 \u062f\u0627\u062f\u0647 \u0645\u06cc \u0634\u0648\u062f. <\/p>\n<p>\u062f\u0631 \u067e\u0627\u06cc\u0627\u0646\u060c \u0628\u0627\u06cc\u062f \u062a\u0642\u0631\u06cc\u0628\u0627\u064b \u0634\u0628\u06cc\u0647 \u0628\u0647 \u0627\u06cc\u0646 \u0628\u0627\u0634\u062f: <\/p>\n<p>\u0628\u06cc\u0627\u06cc\u06cc\u062f \u0628\u0627 \u0627\u0646\u0648\u0627\u0639 \u062f\u0627\u062f\u0647 \u0647\u0627\u06cc\u06cc \u06a9\u0647 \u0646\u06cc\u0627\u0632 \u062f\u0627\u0631\u06cc\u0645 \u0634\u0631\u0648\u0639 \u06a9\u0646\u06cc\u0645:<\/p>\n<p>struct PetApp {<br \/>\n    app_state: AppState,<br \/>\n    background_event_sender: Sender,<br \/>\n    event_receiver: Receiver,<br \/>\n    db_con: ArcMutex&gt;,<br \/>\n}<\/p>\n<p>#[derive(Debug, Clone)]\nstruct AppState {<br \/>\n    selected_pet: Option,<br \/>\n    pets: Vec,<br \/>\n    pet_image: Option,<br \/>\n    add_form: AddForm,<br \/>\n}<\/p>\n<p>#[derive(Debug, Clone)]\nstruct AddForm {<br \/>\n    show: bool,<br \/>\n    name: String,<br \/>\n    age: String,<br \/>\n    kind: String,<br \/>\n}<\/p>\n<p>    \u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/p>\n<p>    \u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/p>\n<p>\u0631\u0627 \u062a\u0639\u0631\u06cc\u0641 \u0645\u06cc \u06a9\u0646\u06cc\u0645 PetApp\u060c \u06a9\u0647 \u0633\u0627\u062e\u062a\u0627\u0631\u06cc \u0627\u0633\u062a \u06a9\u0647 \u062a\u0645\u0627\u0645 \u062f\u0627\u062f\u0647 \u0647\u0627\u06cc \u0628\u0631\u0646\u0627\u0645\u0647 \u0631\u0627 \u062f\u0631 \u062e\u0648\u062f \u0646\u06af\u0647 \u0645\u06cc \u062f\u0627\u0631\u062f. \u0646\u06af\u0647 \u0645\u06cc \u062f\u0627\u0631\u062f AppState\u060c \u06a9\u0647 \u0646\u0645\u0627\u06cc\u0634\u06cc \u0627\u0632 \u0648\u0636\u0639\u06cc\u062a \u0641\u0639\u0644\u06cc \u0628\u0631\u0646\u0627\u0645\u0647 \u0627\u0633\u062a\u060c \u0628\u0647 \u0639\u0646\u0648\u0627\u0646 \u0645\u062b\u0627\u0644\u060c \u06a9\u062f\u0627\u0645 \u062d\u06cc\u0648\u0627\u0646\u0627\u062a \u062e\u0627\u0646\u06af\u06cc \u0641\u0647\u0631\u0633\u062a \u0634\u062f\u0647 \u0627\u0646\u062f\u060c \u06a9\u062f\u0627\u0645 \u06cc\u06a9 \u0627\u0646\u062a\u062e\u0627\u0628 \u0634\u062f\u0647 \u0627\u0633\u062a \u0648 \u063a\u06cc\u0631\u0647\u060c \u0648 \u0647\u0645\u0686\u0646\u06cc\u0646 AddForm \u062d\u0627\u0644\u062a\u060c \u06a9\u0647 \u0646\u0634\u0627\u0646 \u062f\u0647\u0646\u062f\u0647 \u0648\u0636\u0639\u06cc\u062a \u0641\u0639\u0644\u06cc \u0641\u0631\u0645 \u0628\u0631\u0627\u06cc \u0627\u0636\u0627\u0641\u0647 \u06a9\u0631\u062f\u0646 \u06cc\u06a9 \u062d\u06cc\u0648\u0627\u0646 \u062e\u0627\u0646\u06af\u06cc \u062c\u062f\u06cc\u062f \u0627\u0633\u062a. <\/p>\n<p>PetApp  \u0647\u0645\u0686\u0646\u06cc\u0646 \u0634\u0627\u0645\u0644 \u0627\u062a\u0635\u0627\u0644 \u067e\u0627\u06cc\u06af\u0627\u0647 \u062f\u0627\u062f\u0647 \u0645\u0634\u062a\u0631\u06a9\u060c \u0627\u0646\u062a\u0647\u0627\u06cc \u0641\u0631\u0633\u062a\u0646\u062f\u0647 \u0628\u0631\u0627\u06cc \u0631\u0634\u062a\u0647 \u067e\u0633\u200c\u0632\u0645\u06cc\u0646\u0647\u060c \u0648 \u0647\u0645\u0686\u0646\u06cc\u0646 \u0627\u0646\u062a\u0647\u0627\u06cc \u06af\u06cc\u0631\u0646\u062f\u0647 \u0628\u0631\u0627\u06cc \u06a9\u0627\u0646\u0627\u0644 \u0631\u0648\u06cc\u062f\u0627\u062f \u0628\u0631\u0627\u06cc \u0631\u0634\u062a\u0647 \u0631\u0646\u062f\u0631 \u0627\u0633\u062a\u060c \u0628\u0646\u0627\u0628\u0631\u0627\u06cc\u0646 \u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u06cc\u0645 \u0645\u06a9\u0627\u0646\u06cc\u0632\u0645 \u0645\u062f\u06cc\u0631\u06cc\u062a \u0631\u0648\u06cc\u062f\u0627\u062f \u0631\u0627 \u06a9\u0647 \u062f\u0631 \u0628\u0627\u0644\u0627 \u067e\u06cc\u0627\u062f\u0647\u200c\u0633\u0627\u0632\u06cc \u06a9\u0631\u062f\u06cc\u0645\u060c \u0627\u062c\u0631\u0627 \u06a9\u0646\u06cc\u0645. <\/p>\n<p>\u062f\u0631 \u0645\u0631\u062d\u0644\u0647 \u0628\u0639\u062f\u060c \u0645\u0627 \u0631\u0627 \u0627\u062c\u0631\u0627 \u0645\u06cc \u06a9\u0646\u06cc\u0645 PetApp::new \u0631\u0648\u0634\u060c \u0628\u0646\u0627\u0628\u0631\u0627\u06cc\u0646 \u0645\u0627 \u0645\u06cc \u062a\u0648\u0627\u0646\u06cc\u0645 \u0628\u0631\u0646\u0627\u0645\u0647 \u062e\u0648\u062f \u0631\u0627 \u0645\u0642\u062f\u0627\u0631\u062f\u0647\u06cc \u0627\u0648\u0644\u06cc\u0647 \u06a9\u0646\u06cc\u0645:<\/p>\n<p>impl PetApp {<br \/>\n    fn new(<br \/>\n        background_event_sender: Sender,<br \/>\n        event_receiver: Receiver,<br \/>\n        db_con: sqlite::Connection,<br \/>\n    ) -&gt; ResultBox&gt; {<br \/>\n        let db_con = Arc::new(Mutex::new(db_con));<br \/>\n        let pets = get_pets_from_db(db_con.clone())?;<br \/>\n        Ok(Box::new(Self {<br \/>\n            app_state: AppState {<br \/>\n                selected_pet: None,<br \/>\n                pets,<br \/>\n                pet_image: None,<br \/>\n                add_form: AddForm {<br \/>\n                    show: false,<br \/>\n                    name: String::default(),<br \/>\n                    age: String::default(),<br \/>\n                    kind: String::default(),<br \/>\n                },<br \/>\n            },<br \/>\n            background_event_sender,<br \/>\n            event_receiver,<br \/>\n            db_con,<br \/>\n        }))<br \/>\n    }<br \/>\n}<\/p>\n<p>    \u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/p>\n<p>    \u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/p>\n<p>\u0648\u0631\u0648\u062f\u06cc \u0631\u0627 \u0628\u0633\u062a\u0647 \u0628\u0646\u062f\u06cc \u0645\u06cc \u06a9\u0646\u06cc\u0645 sqlite::Connection \u062f\u0627\u062e\u0644 \u06cc\u06a9 Arc&gt; \u0628\u0646\u0627\u0628\u0631\u0627\u06cc\u0646 \u0645\u06cc \u062a\u0648\u0627\u0646\u06cc\u0645 \u0628\u0627 \u062e\u06cc\u0627\u0644 \u0631\u0627\u062d\u062a \u0622\u0646 \u0631\u0627 \u062f\u0631 \u0633\u0631\u0627\u0633\u0631 \u0631\u0634\u062a\u0647 \u0647\u0627 \u0628\u0647 \u0627\u0634\u062a\u0631\u0627\u06a9 \u0628\u06af\u0630\u0627\u0631\u06cc\u0645 \u0648 \u0644\u06cc\u0633\u062a \u0627\u0648\u0644\u06cc\u0647 \u062d\u06cc\u0648\u0627\u0646\u0627\u062a \u062e\u0627\u0646\u06af\u06cc \u0631\u0627 \u0648\u0627\u06a9\u0634\u06cc \u06a9\u0646\u06cc\u0645 \u0648 \u0622\u0646 \u0631\u0627 \u062f\u0631 AppState \u062a\u0646\u0638\u06cc\u0645 \u06a9\u0646\u06cc\u0645. \u0628\u0642\u06cc\u0647 \u062d\u0627\u0644\u062a \u0628\u0647 \u0633\u0627\u062f\u06af\u06cc \u0628\u0647 \u06cc\u06a9 \u067e\u06cc\u0634 \u0641\u0631\u0636 \u0627\u06cc\u0645\u0646 \u0645\u0642\u062f\u0627\u0631\u062f\u0647\u06cc \u0627\u0648\u0644\u06cc\u0647 \u0645\u06cc \u0634\u0648\u062f. <\/p>\n<p>\u0628\u0631\u0645\u06cc \u06af\u0631\u062f\u06cc\u0645 a Result&gt; \u0627\u0632 \u0622\u0646\u062c\u0627\u06cc\u06cc \u06a9\u0647 \u0622\u0646 \u0686\u06cc\u0632\u06cc \u0627\u0633\u062a eframe \u0627\u0646\u062a\u0638\u0627\u0631 \u0645\u06cc \u0631\u0648\u062f \u0647\u0646\u06af\u0627\u0645 \u0627\u06cc\u062c\u0627\u062f \u06cc\u06a9 \u0628\u0631\u0646\u0627\u0645\u0647 \u0628\u0648\u0645\u06cc \u062c\u062f\u06cc\u062f\u060c \u06a9\u0647 \u062f\u0631 \u0627\u062f\u0627\u0645\u0647 \u0628\u0647 \u0628\u0631\u0631\u0633\u06cc \u0622\u0646 \u062e\u0648\u0627\u0647\u06cc\u0645 \u067e\u0631\u062f\u0627\u062e\u062a main:<\/p>\n<p>fn main() -&gt; Result()&gt; {<br \/>\n    &#8230;<br \/>\n    let options = eframe::NativeOptions {<br \/>\n        viewport: egui::ViewportBuilder::default()<br \/>\n            .with_always_on_top()<br \/>\n            .with_inner_size([640.0, 480.0]),<br \/>\n        ..Default::default()<br \/>\n    };<br \/>\n    &#8230;<br \/>\n    eframe::run_native(<br \/>\n        &#8220;PetApp&#8221;,<br \/>\n        options,<br \/>\n        Box::new(|context| {<br \/>\n            egui_extras::install_image_loaders(&amp;context.egui_ctx);<br \/>\n            Ok(PetApp::new(<br \/>\n                background_event_sender,<br \/>\n                event_receiver,<br \/>\n                db_con,<br \/>\n            )?)<br \/>\n        }),<br \/>\n    )<br \/>\n    .map_err(|e| anyhow!(&#8220;eframe error: {}&#8221;, e))<br \/>\n}<\/p>\n<p>    \u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/p>\n<p>    \u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/p>\n<p>\u0645\u0627 \u0628\u0631\u062e\u06cc \u0627\u0632 \u06af\u0632\u06cc\u0646\u0647 \u0647\u0627\u06cc \u0628\u0631\u0646\u0627\u0645\u0647 \u0645\u0627\u0646\u0646\u062f \u0627\u0646\u062f\u0627\u0632\u0647 \u067e\u0646\u062c\u0631\u0647 \u0631\u0627 \u062a\u0639\u0631\u06cc\u0641 \u0645\u06cc \u06a9\u0646\u06cc\u0645 \u0648 \u0633\u067e\u0633 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc \u06a9\u0646\u06cc\u0645 eframe::run_native \u0628\u0631\u0627\u06cc \u0645\u0642\u062f\u0627\u0631\u062f\u0647\u06cc \u0627\u0648\u0644\u06cc\u0647 \u0628\u0631\u0646\u0627\u0645\u0647 \u0631\u0627\u0628\u0637 \u06a9\u0627\u0631\u0628\u0631\u06cc \u06af\u0631\u0627\u0641\u06cc\u06a9\u06cc. <\/p>\n<p>\u06cc\u06a9\u06cc \u0627\u0632 \u0645\u0648\u0627\u0631\u062f\u06cc \u06a9\u0647 \u062f\u0631 \u0627\u06cc\u0646\u062c\u0627 \u0628\u0627\u06cc\u062f \u0628\u0647 \u0622\u0646 \u0627\u0634\u0627\u0631\u0647 \u06a9\u0631\u062f\u060c \u0644\u0648\u062f\u0631\u0647\u0627\u06cc egui_extras \u0647\u0633\u062a\u0646\u062f \u06a9\u0647 \u062f\u0631 \u062d\u06cc\u0646 \u0627\u06cc\u062c\u0627\u062f \u0628\u0631\u0646\u0627\u0645\u0647 \u0646\u0635\u0628 \u0645\u06cc\u200c\u06a9\u0646\u06cc\u0645. \u0627\u06cc\u0646\u0647\u0627 \u06a9\u0645\u06a9\u200c\u0647\u0627\u06cc\u06cc \u0647\u0633\u062a\u0646\u062f \u06a9\u0647 \u0628\u0627\u0631\u06af\u0630\u0627\u0631\u06cc \u067e\u0648\u06cc\u0627 \u062a\u0635\u0627\u0648\u06cc\u0631 \u0631\u0627 \u0627\u0632 \u0631\u0648\u06cc \u062f\u06cc\u0633\u06a9 \u06cc\u0627 \u0627\u0632 \u06cc\u06a9 URL \u062f\u0631\u0648\u0646 \u0622\u0633\u0627\u0646 \u0645\u06cc\u200c\u06a9\u0646\u0646\u062f egui. \u0627\u06cc\u0646 \u0639\u0645\u0644\u06a9\u0631\u062f \u0631\u0627 \u0645\u06cc \u062a\u0648\u0627\u0646 \u0633\u0641\u0627\u0631\u0634\u06cc \u06a9\u0631\u062f\u060c \u0627\u0645\u0627 \u067e\u06cc\u0634 \u0641\u0631\u0636 \u06a9\u0627\u0645\u0644\u0627\u064b \u0645\u0641\u06cc\u062f \u0627\u0633\u062a\u060c \u0646\u0634\u0627\u0646\u06af\u0631 \u0628\u0627\u0631\u06af\u0630\u0627\u0631\u06cc \u0631\u0627 \u062f\u0631 \u062d\u06cc\u0646 \u0648\u0627\u06a9\u0634\u06cc \u062a\u0635\u0648\u06cc\u0631 \u0648 \u0633\u067e\u0633 \u0646\u0645\u0627\u06cc\u0634 \u0622\u0646 \u0631\u0627 \u0646\u0634\u0627\u0646 \u0645\u06cc \u062f\u0647\u062f. <\/p>\n<p>\u0627\u0632 \u0622\u0646\u062c\u0627\u06cc\u06cc \u06a9\u0647 \u0645\u0627 \u0641\u0642\u0637 \u0645\u06cc \u062a\u0648\u0627\u0646\u06cc\u0645 \u0627\u0632 \u0627\u0646\u0648\u0627\u0639\u06cc \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0646\u06cc\u0645 \u06a9\u0647 the \u0631\u0627 \u067e\u06cc\u0627\u062f\u0647 \u0633\u0627\u0632\u06cc \u06a9\u0646\u0646\u062f eframe::App \u0635\u0641\u062a \u062f\u0631\u0648\u0646 eframe::run_native\u060c \u0645\u0627 \u0628\u0627\u06cc\u062f \u0627\u06cc\u0646 \u0648\u06cc\u0698\u06af\u06cc \u0631\u0627 \u0627\u062c\u0631\u0627 \u06a9\u0646\u06cc\u0645. <\/p>\n<p>\u0627\u062c\u0631\u0627 \u0641\u0642\u0637 \u0634\u0627\u0645\u0644 update \u062a\u0627\u0628\u0639\u06cc \u06a9\u0647 \u062f\u0627\u0631\u0627\u06cc \u0627\u0645\u0636\u0627\u06cc \u0632\u06cc\u0631 \u0627\u0633\u062a:<\/p>\n<p>  fn update(&amp;mut self, ctx: &amp;eframe::egui::Context, _frame: &amp;mut eframe::Frame)<\/p>\n<p>\u0637\u0648\u0644 \u0645\u06cc \u06a9\u0634\u062f Context \u0648 \u0627\u0644\u0641 Frame\u060c \u06a9\u0647 \u0645\u0627 \u0628\u0647 \u0622\u0646 \u0646\u06cc\u0627\u0632 \u0646\u062e\u0648\u0627\u0647\u06cc\u0645 \u062f\u0627\u0634\u062a. \u0627\u0645\u0627 \u0627\u062d\u062a\u0645\u0627\u0644\u0627\u064b \u0645\u06cc \u062a\u0648\u0627\u0646\u06cc\u062f \u0622\u0646 \u0631\u0627 \u0628\u0647 \u062e\u0627\u0637\u0631 \u0628\u0633\u067e\u0627\u0631\u06cc\u062f Context\u060c \u0632\u06cc\u0631\u0627 \u0627\u06cc\u0646 \u0647\u0645\u0627\u0646 \u0686\u06cc\u0632\u06cc \u0627\u0633\u062a \u06a9\u0647 \u0642\u0628\u0644\u0627\u064b \u0628\u0631\u0627\u06cc \u0634\u0631\u0648\u0639 \u0631\u0646\u06af \u0622\u0645\u06cc\u0632\u06cc \u0645\u062c\u062f\u062f \u062f\u0631 \u0645\u0648\u0636\u0648\u0639 \u0631\u0646\u062f\u0631 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0631\u062f\u06cc\u0645. \u0628\u0646\u0627\u0628\u0631\u0627\u06cc\u0646 \u0647\u0631 \u0632\u0645\u0627\u0646 \u06a9\u0647 \u062a\u0645\u0627\u0633 \u0645\u06cc \u06af\u06cc\u0631\u06cc\u0645 context.request_repaint()\u060c \u0627\u06cc\u0646 update \u062a\u0627\u0628\u0639 \u062f\u0648\u0628\u0627\u0631\u0647 \u0641\u0631\u0627\u062e\u0648\u0627\u0646\u06cc \u0645\u06cc \u0634\u0648\u062f:<\/p>\n<p>impl eframe::App for PetApp {<br \/>\n    fn update(&amp;mut self, ctx: &amp;eframe::egui::Context, _frame: &amp;mut eframe::Frame) {<br \/>\n        self.handle_gui_events();<\/p>\n<p>        egui::CentralPanel::default().show(ctx, |ui| {<br \/>\n            egui::SidePanel::left(&#8220;left panel&#8221;)<br \/>\n                .resizable(false)<br \/>\n                .default_width(200.0)<br \/>\n                .show_inside(ui, |ui| {<\/p>\n<p>    \u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/p>\n<p>    \u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/p>\n<p>\u0627\u062c\u0631\u0627\u06cc \u0622\u0646 \u0631\u0627 \u0622\u063a\u0627\u0632 \u0645\u06cc \u06a9\u0646\u06cc\u0645 update \u0628\u0627 \u062a\u0645\u0627\u0633 \u0628\u0627 \u0645\u0627 handle_gui_events \u0631\u0648\u0634\u06cc \u06a9\u0647 \u062f\u0631 \u0628\u0627\u0644\u0627 \u067e\u06cc\u0627\u062f\u0647 \u0633\u0627\u0632\u06cc \u06a9\u0631\u062f\u06cc\u0645. \u0627\u06cc\u0646 \u0642\u0633\u0645\u062a \u062f\u0631\u06cc\u0627\u0641\u062a \u06a9\u0646\u0646\u062f\u0647 \u06a9\u0627\u0646\u0627\u0644 \u0631\u0627 \u0628\u0631\u0627\u06cc \u0631\u0648\u06cc\u062f\u0627\u062f\u0647\u0627 \u0628\u0631\u0631\u0633\u06cc \u0645\u06cc \u06a9\u0646\u062f \u0648 \u0622\u0646\u0647\u0627 \u0631\u0627 \u0627\u0639\u0645\u0627\u0644 \u0645\u06cc \u06a9\u0646\u062f\u060c \u06a9\u0647 \u062a\u0636\u0645\u06cc\u0646 \u0645\u06cc \u06a9\u0646\u062f \u06a9\u0647 \u06cc\u06a9 AppState \u0628\u0647 \u0631\u0648\u0632 \u062e\u0648\u0627\u0647\u06cc\u0645 \u062f\u0627\u0634\u062a \u06a9\u0647 \u0648\u0627\u0631\u062f \u0645\u0631\u062d\u0644\u0647 \u0631\u0646\u062f\u0631 \u0645\u0627 \u0645\u06cc \u0634\u0648\u062f. <\/p>\n<p>\u0647\u0645\u0627\u0646\u0637\u0648\u0631 \u06a9\u0647 \u062f\u0631 \u0628\u0627\u0644\u0627 \u0630\u06a9\u0631 \u0634\u062f\u060c \u0628\u0627 \u062a\u0648\u062c\u0647 \u0628\u0647 \u0627\u06cc\u0646\u06a9\u0647 egui \u06cc\u06a9 \u0686\u0627\u0631\u0686\u0648\u0628 \u0631\u0627\u0628\u0637 \u06a9\u0627\u0631\u0628\u0631\u06cc \u06af\u0631\u0627\u0641\u06cc\u06a9\u06cc \u062d\u0627\u0644\u062a \u0641\u0648\u0631\u06cc \u0627\u0633\u062a\u060c \u0647\u0631 \u0686\u06cc\u0632\u06cc \u06a9\u0647 \u062f\u0631 \u0627\u06cc\u0646\u062c\u0627 \u062a\u0639\u0631\u06cc\u0641 \u0645\u06cc \u06a9\u0646\u06cc\u0645 \u062f\u0631 \u0647\u0631 \u0641\u0631\u06cc\u0645 \u0631\u0646\u062f\u0631 \u0645\u06cc \u0634\u0648\u062f. \u0628\u0646\u0627\u0628\u0631\u0627\u06cc\u0646 \u0627\u06af\u0631 \u0628\u0647 \u062f\u0644\u06cc\u0644 \u0627\u0631\u0633\u0627\u0644 \u06cc\u06a9 \u0631\u0648\u06cc\u062f\u0627\u062f\u060c \u062a\u063a\u06cc\u06cc\u0631\u06cc \u062f\u0631 \u0627\u06cc\u0646\u062c\u0627 \u062f\u0631 AppState \u0627\u06cc\u062c\u0627\u062f \u06a9\u0646\u06cc\u0645\u060c \u0628\u0644\u0627\u0641\u0627\u0635\u0644\u0647 \u062f\u0631 \u0631\u0627\u0628\u0637 \u06a9\u0627\u0631\u0628\u0631\u06cc \u0646\u0645\u0627\u06cc\u0634 \u062f\u0627\u062f\u0647 \u0645\u06cc\u200c\u0634\u0648\u062f \u0628\u062f\u0648\u0646 \u0627\u06cc\u0646\u06a9\u0647 \u0646\u06cc\u0627\u0632\u06cc \u0628\u0647 \u062f\u0633\u062a\u06a9\u0627\u0631\u06cc \u0648 \u0628\u0647\u200c\u0631\u0648\u0632\u0631\u0633\u0627\u0646\u06cc \u0647\u0631 \u0645\u0624\u0644\u0641\u0647\u200c\u0627\u06cc \u062f\u0627\u0634\u062a\u0647 \u0628\u0627\u0634\u06cc\u0645. <\/p>\n<p>\u0633\u067e\u0633\u060c \u06a9\u0644\u06cc \u0631\u0627 \u062a\u0639\u0631\u06cc\u0641 \u0645\u06cc \u06a9\u0646\u06cc\u0645 CentralPanel \u0648 \u062f\u0631 \u062f\u0627\u062e\u0644 \u0622\u0646 \u0628\u0627 \u0631\u0646\u062f\u0631 \u06a9\u0631\u062f\u0646 \u067e\u0646\u0644 \u0644\u06cc\u0633\u062a \u0633\u0645\u062a \u0686\u067e \u0634\u0631\u0648\u0639 \u06a9\u0646\u06cc\u062f\u060c \u06a9\u0647 \u0622\u0646 \u0631\u0627 \u0631\u0648\u06cc \u0639\u0631\u0636 \u062a\u0646\u0638\u06cc\u0645 \u0645\u06cc \u06a9\u0646\u06cc\u0645 200.0 \u0648 \u0642\u0627\u0628\u0644 \u062a\u063a\u06cc\u06cc\u0631 \u0627\u0646\u062f\u0627\u0632\u0647 \u0646\u06cc\u0633\u062a. <\/p>\n<p>\u062f\u0631 \u0627\u06cc\u0646 \u067e\u0627\u0646\u0644\u060c \u0645\u0627 \u0631\u0627 \u0646\u0634\u0627\u0646 \u062e\u0648\u0627\u0647\u06cc\u0645 \u062f\u0627\u062f Pets \u0639\u0646\u0648\u0627\u0646\u060c \u062c\u062f\u0627\u06a9\u0646\u0646\u062f\u0647\u060c Add new Pet \u062f\u06a9\u0645\u0647 \u0648\u060c \u0627\u06af\u0631 \u062f\u06a9\u0645\u0647 \u0641\u0634\u0627\u0631 \u062f\u0627\u062f\u0647 \u0634\u062f\u060c \u0641\u0631\u0645 \u0627\u0636\u0627\u0641\u0647 \u06a9\u0631\u062f\u0646 \u06cc\u06a9 \u062d\u06cc\u0648\u0627\u0646 \u062e\u0627\u0646\u06af\u06cc \u062c\u062f\u06cc\u062f. \u062f\u0631 \u0632\u06cc\u0631 \u0622\u0646\u060c \u06cc\u06a9 \u062c\u062f\u0627\u06a9\u0646\u0646\u062f\u0647 \u062f\u06cc\u06af\u0631 \u0648 \u0644\u06cc\u0633\u062a \u062d\u06cc\u0648\u0627\u0646\u0627\u062a \u062e\u0627\u0646\u06af\u06cc:<\/p>\n<p>                    ui.vertical_centered(|ui| {<br \/>\n                        ui.heading(&#8220;Pets&#8221;);<br \/>\n                        ui.separator();<br \/>\n                        if ui.button(&#8220;Add new Pet&#8221;).clicked() {<br \/>\n                            self.app_state.add_form.show = !self.app_state.add_form.show;<br \/>\n                        }<br \/>\n                        if self.app_state.add_form.show {<br \/>\n                            ui.separator();<\/p>\n<p>                            ui.vertical_centered(|ui| {<br \/>\n                                ui.horizontal(|ui| {<br \/>\n                                    ui.vertical(|ui| {<br \/>\n                                        ui.label(&#8220;name:&#8221;);<br \/>\n                                        ui.label(&#8220;age&#8221;);<br \/>\n                                        ui.label(&#8220;kind&#8221;);<br \/>\n                                    });<br \/>\n                                    ui.end_row();<br \/>\n                                    ui.vertical(|ui| {<br \/>\n                                        ui.text_edit_singleline(&amp;mut self.app_state.add_form.name);<br \/>\n                                        ui.text_edit_singleline(&amp;mut self.app_state.add_form.age);<br \/>\n                                        ui.text_edit_singleline(&amp;mut self.app_state.add_form.kind);<br \/>\n                                    });<br \/>\n                                });<\/p>\n<p>                                if ui.button(&#8220;Submit&#8221;).clicked() {<br \/>\n                                    let add_form = &amp;mut self.app_state.add_form;<br \/>\n                                    let age = add_form.age.parse::().unwrap_or(0);<br \/>\n                                    let kind = match add_form.kind.as_str() {<br \/>\n                                        &#8220;cat&#8221; =&gt; PetKind(String::from(&#8220;cat&#8221;)),<br \/>\n                                        _ =&gt; PetKind(String::from(&#8220;dog&#8221;)),<br \/>\n                                    };<br \/>\n                                    let name = add_form.name.to_owned();<br \/>\n                                    if !name.is_empty() &amp;&amp; age &gt; 0 {<br \/>\n                                        let _ = self.background_event_sender.send(<br \/>\n                                            Event::InsertPetToDB(<br \/>\n                                                ctx.clone(),<br \/>\n                                                self.db_con.clone(),<br \/>\n                                                Pet {<br \/>\n                                                    id: -1,<br \/>\n                                                    name,<br \/>\n                                                    age,<br \/>\n                                                    kind: kind.clone(),<br \/>\n                                                },<br \/>\n                                            ),<br \/>\n                                        );<br \/>\n                                        let _ = self<br \/>\n                                            .background_event_sender<br \/>\n                                            .send(Event::GetPetImage(ctx.clone(), kind));<br \/>\n                                        add_form.name = String::default();<br \/>\n                                        add_form.age = String::default();<br \/>\n                                        add_form.kind = String::default();<br \/>\n                                    }<br \/>\n                                }<br \/>\n                            });<br \/>\n                        }<\/p>\n<p>                        ui.separator();<br \/>\n                        self.app_state.pets.iter().for_each(|pet| {<br \/>\n                            if ui<br \/>\n                                .selectable_value(<br \/>\n                                    &amp;mut self.app_state.selected_pet,<br \/>\n                                    Some(pet.to_owned()),<br \/>\n                                    pet.name.clone(),<br \/>\n                                )<br \/>\n                                .changed()<br \/>\n                            {<br \/>\n                                let _ = self.background_event_sender.send(Event::GetPetFromDB(<br \/>\n                                    ctx.clone(),<br \/>\n                                    self.db_con.clone(),<br \/>\n                                    pet.id,<br \/>\n                                ));<br \/>\n                                let _ = self<br \/>\n                                    .background_event_sender<br \/>\n                                    .send(Event::GetPetImage(ctx.clone(), pet.kind.clone()));<br \/>\n                            }<br \/>\n                        });<br \/>\n                    });<br \/>\n                });<\/p>\n<p>    \u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/p>\n<p>    \u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/p>\n<p>\u0631\u0648\u0634\u06cc \u06a9\u0647 \u0645\u0627 \u062a\u0639\u0627\u0645\u0644\u0627\u062a \u0631\u0627 \u062f\u0631 \u0631\u0627\u0628\u0637\u200c\u0647\u0627\u06cc \u06a9\u0627\u0631\u0628\u0631\u06cc \u06af\u0631\u0627\u0641\u06cc\u06a9\u06cc \u062d\u0627\u0644\u062a \u0641\u0648\u0631\u06cc \u0645\u062f\u06cc\u0631\u06cc\u062a \u0645\u06cc\u200c\u06a9\u0646\u06cc\u0645 \u0627\u06cc\u0646 \u0627\u0633\u062a \u06a9\u0647 \u0639\u0646\u0627\u0635\u0631\u06cc \u0645\u0627\u0646\u0646\u062f \u062f\u06a9\u0645\u0647\u200c\u0647\u0627 \u062d\u0627\u0644\u062a \u062e\u0648\u062f \u0631\u0627 \u0628\u0631\u0645\u06cc\u200c\u06af\u0631\u062f\u0627\u0646\u0646\u062f. \u0628\u0647 \u0639\u0646\u0648\u0627\u0646 \u0645\u062b\u0627\u0644\u060c \u0627\u06af\u0631 \u0631\u0648\u06cc \u062f\u06a9\u0645\u0647 \u062f\u0631 \u06cc\u06a9 \u0642\u0627\u0628 \u06a9\u0644\u06cc\u06a9 \u0634\u0648\u062f\u060c clicked() \u0645\u062a\u062f true \u0631\u0627 \u0628\u0631\u0645\u06cc \u06af\u0631\u062f\u0627\u0646\u062f. \u0627\u06cc\u0646 \u0628\u0633\u06cc\u0627\u0631 \u0645\u062a\u0641\u0627\u0648\u062a \u0627\u0632 \u0631\u0627\u0628\u0637\u200c\u0647\u0627\u06cc \u06a9\u0627\u0631\u0628\u0631\u06cc \u06af\u0631\u0627\u0641\u06cc\u06a9\u06cc \u062d\u0627\u0644\u062a \u062d\u0641\u0638 \u0634\u062f\u0647 \u0627\u0633\u062a\u060c \u062c\u0627\u06cc\u06cc \u06a9\u0647 \u0645\u0627 \u06cc\u06a9 \u0631\u0648\u06cc\u062f\u0627\u062f \u0634\u0646\u0648\u0646\u062f\u0647 \u0631\u0627 \u0645\u062a\u0635\u0644 \u0645\u06cc\u200c\u06a9\u0646\u06cc\u0645\u060c \u06a9\u0647 \u0633\u067e\u0633 \u0628\u0647 \u0635\u0648\u0631\u062a \u0646\u0627\u0647\u0645\u0632\u0645\u0627\u0646 \u0641\u0631\u0627\u062e\u0648\u0627\u0646\u06cc \u0645\u06cc\u200c\u0634\u0648\u062f. <\/p>\n<p>\u0628\u0631\u0627\u06cc \u062a\u063a\u06cc\u06cc\u0631\u0627\u062a \u0645\u0628\u062a\u0646\u06cc \u0628\u0631 \u062d\u0627\u0644\u062a\u060c \u0645\u0627 \u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u06cc\u0645 \u0628\u0647 \u0633\u0627\u062f\u06af\u06cc \u0627\u0632 if \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0646\u06cc\u0645\u060c \u0645\u0627\u0646\u0646\u062f \u0646\u0634\u0627\u0646 \u062f\u0627\u062f\u0646 \u0641\u0631\u0645 \u0628\u0631\u0627\u06cc \u0627\u0641\u0632\u0648\u062f\u0646 \u062d\u06cc\u0648\u0627\u0646\u0627\u062a \u062e\u0627\u0646\u06af\u06cc \u062a\u0646\u0647\u0627 \u062f\u0631 \u0635\u0648\u0631\u062a\u06cc \u06a9\u0647 \u067e\u0631\u0686\u0645 AppState \u0628\u0631\u0627\u06cc \u0646\u0634\u0627\u0646 \u062f\u0627\u062f\u0646 \u0622\u0646 \u062f\u0631\u0633\u062a \u0628\u0627\u0634\u062f \u0648 \u062d\u062a\u06cc \u0622\u0646 \u0631\u0627 \u062f\u0631 \u063a\u06cc\u0631 \u0627\u06cc\u0646 \u0635\u0648\u0631\u062a \u0631\u0646\u062f\u0631 \u0646\u06a9\u0646\u06cc\u0645. <\/p>\n<p>\u0641\u0631\u0645 \u0631\u0646\u062f\u0631 \u0646\u0633\u0628\u062a\u0627 \u0633\u0627\u062f\u0647 \u0627\u0633\u062a \u0648 \u067e\u0633 \u0627\u0632 \u06a9\u0644\u06cc\u06a9 \u06a9\u0631\u062f\u0646 Submit\u060c \u0645\u0627 \u0628\u0631\u062e\u06cc \u0627\u0632 \u0627\u0639\u062a\u0628\u0627\u0631 \u0633\u0646\u062c\u06cc \u0628\u0633\u06cc\u0627\u0631 \u0627\u0633\u0627\u0633\u06cc \u0631\u0627 \u0627\u0646\u062c\u0627\u0645 \u0645\u06cc \u062f\u0647\u06cc\u0645. \u0627\u06af\u0631 \u062f\u0627\u062f\u0647\u200c\u0647\u0627 \u062e\u0648\u0628 \u0628\u0627\u0634\u0646\u062f\u060c \u0631\u0648\u06cc\u062f\u0627\u062f\u06cc \u0631\u0627 \u0631\u0627\u0647\u200c\u0627\u0646\u062f\u0627\u0632\u06cc \u0645\u06cc\u200c\u06a9\u0646\u06cc\u0645 \u062a\u0627 \u0645\u0648\u0636\u0648\u0639 \u067e\u0633\u200c\u0632\u0645\u06cc\u0646\u0647 \u0631\u0627 \u0628\u0631\u0627\u06cc \u0627\u0641\u0632\u0648\u062f\u0646 \u06cc\u06a9 \u062d\u06cc\u0648\u0627\u0646 \u062e\u0627\u0646\u06af\u06cc \u062c\u062f\u06cc\u062f \u0628\u0647 \u067e\u0627\u06cc\u06af\u0627\u0647 \u062f\u0627\u062f\u0647 \u0645\u0637\u0644\u0639 \u06a9\u0646\u06cc\u0645. <\/p>\n<p>\u062f\u0631 \u06cc\u06a9 \u067e\u06cc\u0627\u062f\u0647\u200c\u0633\u0627\u0632\u06cc \u0648\u0627\u0642\u0639\u06cc\u060c \u0645\u0627 \u0627\u0644\u0628\u062a\u0647 \u062f\u0631 \u0627\u06cc\u0646\u062c\u0627 \u0645\u0642\u062f\u0627\u0631\u06cc \u0645\u062f\u06cc\u0631\u06cc\u062a \u062e\u0637\u0627 \u0631\u0627 \u0627\u0636\u0627\u0641\u0647 \u0645\u06cc\u200c\u06a9\u0646\u06cc\u0645\u060c \u0628\u0647 \u0639\u0646\u0648\u0627\u0646 \u0645\u062b\u0627\u0644\u060c \u0627\u06af\u0631 \u06a9\u0627\u0631\u0628\u0631 \u06cc\u06a9 \u0645\u0642\u062f\u0627\u0631 \u0646\u0627\u0645\u0639\u062a\u0628\u0631 \u0628\u0631\u0627\u06cc \u0633\u0646 \u0648\u0627\u0631\u062f \u06a9\u0646\u062f\u060c \u06cc\u06a9 \u067e\u06cc\u0627\u0645 \u062e\u0637\u0627 \u0628\u0627 \u0641\u0631\u0645\u062a \u0632\u06cc\u0628\u0627 \u0631\u0627 \u0628\u0647 \u06a9\u0627\u0631\u0628\u0631 \u0646\u0634\u0627\u0646 \u0645\u06cc\u200c\u062f\u0647\u062f. <\/p>\n<p>\u062f\u0631 \u0632\u06cc\u0631 \u0622\u0646\u060c \u0645\u0627 \u0628\u0647 \u0633\u0627\u062f\u06af\u06cc \u0644\u06cc\u0633\u062a \u062d\u06cc\u0648\u0627\u0646\u0627\u062a \u062e\u0627\u0646\u06af\u06cc \u0631\u0627 \u062a\u06a9\u0631\u0627\u0631 \u0645\u06cc \u06a9\u0646\u06cc\u0645 \u0648 \u06cc\u06a9 \u0641\u06cc\u0644\u062f \u0627\u0646\u062a\u062e\u0627\u0628\u06cc \u0628\u0631\u0627\u06cc \u0622\u0646 \u0627\u0631\u0627\u0626\u0647 \u0645\u06cc \u06a9\u0646\u06cc\u0645. \u0627\u06af\u0631 \u0631\u0648\u06cc \u06cc\u06a9\u06cc \u0627\u0632 \u062d\u06cc\u0648\u0627\u0646\u0627\u062a \u062e\u0627\u0646\u06af\u06cc \u06a9\u0644\u06cc\u06a9 \u0634\u0648\u062f\u060c \u0631\u0633\u06cc\u062f\u06af\u06cc \u0628\u0647 \u0622\u0646 \u0627\u0632 \u0637\u0631\u06cc\u0642 \u0627\u0646\u062c\u0627\u0645 \u0645\u06cc \u0634\u0648\u062f changed() \u0631\u0648\u0634 \u062f\u0631 selectable_value\u060c \u06a9\u0647 \u0628\u0647 \u0645\u0627 \u0627\u06cc\u0646 \u0627\u0637\u0644\u0627\u0639\u0627\u062a \u0631\u0627 \u0645\u06cc \u062f\u0647\u062f \u06a9\u0647 \u0645\u0642\u062f\u0627\u0631 \u062a\u063a\u06cc\u06cc\u0631 \u06a9\u0631\u062f\u0647 \u0627\u0633\u062a \u0648 \u0628\u0647 \u0645\u0627 \u0627\u0645\u06a9\u0627\u0646 \u0645\u06cc \u062f\u0647\u062f \u0631\u0648\u06cc\u062f\u0627\u062f\u06cc \u0631\u0627 \u062f\u0631 \u0631\u0634\u062a\u0647 \u067e\u0633 \u0632\u0645\u06cc\u0646\u0647 \u0628\u0631\u0627\u06cc \u0648\u0627\u06a9\u0634\u06cc \u062f\u0627\u062f\u0647 \u0647\u0627\u060c \u0628\u0647 \u0631\u0648\u0632 \u0631\u0633\u0627\u0646\u06cc AppState \u0648 \u0648\u0627\u06a9\u0634\u06cc \u06cc\u06a9 \u062a\u0635\u0648\u06cc\u0631 \u062c\u062f\u06cc\u062f \u0631\u0627\u0647 \u0627\u0646\u062f\u0627\u0632\u06cc \u06a9\u0646\u06cc\u0645. <\/p>\n<p>\u0646\u0648\u0634\u062a\u0646 UI \u0646\u06cc\u0632 \u062f\u0631 \u062f\u0627\u062e\u0644 \u0628\u0633\u06cc\u0627\u0631 \u0628\u0635\u0631\u06cc \u0627\u0633\u062a egui. \u0645\u0627 \u0645\u06cc \u062a\u0648\u0627\u0646\u06cc\u0645 \u0639\u0646\u0627\u0635\u0631 \u0633\u0627\u062e\u062a\u0627\u0631\u06cc \u0645\u062e\u062a\u0644\u0641 \u0631\u0627 \u0628\u0647 \u0637\u0648\u0631 \u062f\u0644\u062e\u0648\u0627\u0647 \u062f\u0631 \u062a\u0648\u062f\u0631\u062a\u0648 \u0642\u0631\u0627\u0631 \u062f\u0647\u06cc\u0645 \u0648 \u062f\u0631 \u0635\u0648\u0631\u062a \u0646\u06cc\u0627\u0632 \u0639\u0646\u0627\u0635\u0631 \u0627\u0641\u0642\u06cc \u0648 \u0639\u0645\u0648\u062f\u06cc \u0631\u0627 \u0627\u0636\u0627\u0641\u0647 \u06a9\u0646\u06cc\u0645. egui \u062f\u0627\u0631\u0627\u06cc \u0637\u06cc\u0641 \u06af\u0633\u062a\u0631\u062f\u0647 \u0627\u06cc \u0627\u0632 \u0648\u06cc\u062c\u062a \u0647\u0627\u06cc \u0645\u062e\u062a\u0644\u0641 \u0627\u0633\u062a. \u0627\u0645\u0627 \u0647\u0645\u0627\u0646\u0637\u0648\u0631 \u06a9\u0647 \u062f\u0631 \u0628\u0627\u0644\u0627 \u0630\u06a9\u0631 \u0634\u062f\u060c \u0633\u0627\u062e\u062a \u0648\u06cc\u062c\u062a \u0647\u0627\u06cc \u06a9\u0627\u0645\u0644\u0627\u064b \u0633\u0641\u0627\u0631\u0634\u06cc \u0628\u0627 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 API \u0631\u0646\u062f\u0631 \u0622\u0646\u0647\u0627 \u0646\u06cc\u0632 \u0627\u0645\u06a9\u0627\u0646 \u067e\u0630\u06cc\u0631 \u0627\u0633\u062a. <\/p>\n<p>\u0628\u0627 \u0648\u062c\u0648\u062f \u067e\u0646\u0644 \u0644\u06cc\u0633\u062a \u0645\u0627\u060c \u0627\u06a9\u0646\u0648\u0646 \u0645\u06cc \u062a\u0648\u0627\u0646\u06cc\u0645 \u062e\u0648\u062f \u0631\u0627 \u067e\u06cc\u0627\u062f\u0647 \u0633\u0627\u0632\u06cc \u06a9\u0646\u06cc\u0645 details \u067e\u0627\u0646\u0644. \u0627\u06cc\u0646 \u0628\u062e\u0634 \u06a9\u0645\u06cc \u0633\u0627\u062f\u0647 \u062a\u0631 \u0627\u0633\u062a \u0632\u06cc\u0631\u0627 \u0622\u0646\u0642\u062f\u0631 \u062a\u0639\u0627\u0645\u0644\u06cc \u0646\u06cc\u0633\u062a.<\/p>\n<p>            egui::CentralPanel::default().show_inside(ui, |ui| {<br \/>\n                ui.vertical_centered(|ui| {<br \/>\n                    ui.heading(&#8220;Details&#8221;);<br \/>\n                    if let Some(pet) = &amp;self.app_state.selected_pet {<br \/>\n                        ui.vertical(|ui| {<br \/>\n                            ui.horizontal(|ui| {<br \/>\n                                if ui.button(&#8220;Delete&#8221;).clicked() {<br \/>\n                                    let _ =<br \/>\n                                        self.background_event_sender.send(Event::DeletePetFromDB(<br \/>\n                                            ctx.clone(),<br \/>\n                                            self.db_con.clone(),<br \/>\n                                            pet.id,<br \/>\n                                        ));<br \/>\n                                }<br \/>\n                            });<br \/>\n                            ui.separator();<br \/>\n                            ui.vertical(|ui| {<br \/>\n                                ui.horizontal(|ui| {<br \/>\n                                    ui.vertical(|ui| {<br \/>\n                                        ui.label(&#8220;id:&#8221;);<br \/>\n                                        ui.label(&#8220;name:&#8221;);<br \/>\n                                        ui.label(&#8220;age&#8221;);<br \/>\n                                        ui.label(&#8220;kind&#8221;);<br \/>\n                                    });<br \/>\n                                    ui.end_row();<br \/>\n                                    ui.vertical(|ui| {<br \/>\n                                        ui.label(pet.id.to_string());<br \/>\n                                        ui.label(&amp;pet.name);<br \/>\n                                        ui.label(pet.age.to_string());<br \/>\n                                        ui.label(&amp;pet.kind.0);<br \/>\n                                    });<br \/>\n                                });<br \/>\n                                ui.separator();<br \/>\n                                if let Some(ref pet_image) = self.app_state.pet_image {<br \/>\n                                    ui.add(egui::Image::from_uri(pet_image).max_width(200.0));<br \/>\n                                }<br \/>\n                            });<br \/>\n                        });<br \/>\n                    } else {<br \/>\n                        ui.label(&#8220;No pet selected.&#8221;);<br \/>\n                    }<br \/>\n                });<br \/>\n            });<br \/>\n        });<br \/>\n    }<br \/>\n}<\/p>\n<p>    \u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/p>\n<p>    \u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/p>\n<p>\u0645\u0627 \u0631\u0646\u062f\u0631 \u0645\u06cc \u06a9\u0646\u06cc\u0645 Details \u0639\u0646\u0648\u0627\u0646 \u0648 delete \u062f\u06a9\u0645\u0647 \u0627\u06af\u0631 \u062f\u06a9\u0645\u0647 \u06a9\u0644\u06cc\u06a9 \u0634\u0648\u062f\u060c \u0631\u0648\u06cc\u062f\u0627\u062f \u062d\u0630\u0641 \u0631\u0627 \u0628\u0647 \u0631\u0634\u062a\u0647 \u067e\u0633 \u0632\u0645\u06cc\u0646\u0647 \u0627\u0631\u0633\u0627\u0644 \u0645\u06cc \u06a9\u0646\u06cc\u0645. \u0633\u067e\u0633 \u0628\u0647 \u0633\u0627\u062f\u06af\u06cc \u062c\u0632\u0626\u06cc\u0627\u062a \u062d\u06cc\u0648\u0627\u0646 \u062e\u0627\u0646\u06af\u06cc \u0631\u0627 \u0631\u0646\u062f\u0631 \u0645\u06cc \u06a9\u0646\u06cc\u0645 \u0648 \u062f\u0631 \u0646\u0647\u0627\u06cc\u062a \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc \u06a9\u0646\u06cc\u0645 egui::image::from_uri\u060c \u06a9\u0647 \u0627\u0632 \u0645\u0648\u0627\u0631\u062f \u0630\u06a9\u0631 \u0634\u062f\u0647 \u062f\u0631 \u0628\u0627\u0644\u0627 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc \u06a9\u0646\u062f egui_extras \u0628\u0631\u0627\u06cc \u0648\u0627\u06a9\u0634\u06cc \u062a\u0635\u0648\u06cc\u0631 \u0627\u0632 URL \u062f\u0627\u062f\u0647 \u0634\u062f\u0647\u060c \u0646\u0634\u0627\u0646\u06af\u0631 \u0628\u0627\u0631\u06af\u06cc\u0631\u06cc \u0631\u0627 \u062f\u0631 \u0627\u06cc\u0646 \u0641\u0627\u0635\u0644\u0647 \u0646\u0634\u0627\u0646 \u0645\u06cc \u062f\u0647\u062f. <\/p>\n<p>\u0627\u06af\u0631 \u062d\u06cc\u0648\u0627\u0646 \u062e\u0627\u0646\u06af\u06cc \u0627\u0646\u062a\u062e\u0627\u0628 \u0646\u0634\u062f\u0647 \u0628\u0627\u0634\u062f\u060c \u0628\u0647 \u0633\u0627\u062f\u06af\u06cc \u06cc\u06a9 \u0628\u0631\u0686\u0633\u0628 \u0646\u0634\u0627\u0646 \u0645\u06cc \u062f\u0647\u06cc\u0645. <\/p>\n<p>\u0627\u06cc\u0646 \u0628\u0631\u0627\u06cc \u0633\u0627\u062e\u062a\u0646 \u0631\u0627\u0628\u0637 \u06a9\u0627\u0631\u0628\u0631\u06cc \u0627\u0633\u062a. \u062e\u06cc\u0644\u06cc \u0633\u0627\u062f\u0647\u060c \u062f\u0631\u0633\u062a \u0627\u0633\u062a\u061f <\/p>\n<p>\u0645\u06cc \u062a\u0648\u0627\u0646 \u0633\u0627\u062e\u062a \u06cc\u06a9 \u0628\u0631\u0646\u0627\u0645\u0647 \u067e\u06cc\u0686\u06cc\u062f\u0647 \u0648 \u062a\u0648\u062f\u0631\u062a\u0648 \u0628\u0627 \u0627\u06cc\u0646 \u0645\u0648\u0627\u0631\u062f \u0627\u0648\u0644\u06cc\u0647 \u0631\u0627 \u062a\u0635\u0648\u0631 \u06a9\u0631\u062f\u060c \u0628\u062e\u0634 \u0647\u0627\u06cc \u0645\u062e\u062a\u0644\u0641 \u0631\u0627 \u062f\u0631 \u0645\u0627\u0698\u0648\u0644 \u0647\u0627\u06cc \u0645\u062e\u062a\u0644\u0641 \u0633\u0627\u062e\u062a\u0627\u0631 \u062f\u0627\u062f \u0648 \u0622\u0646 \u0631\u0627 \u062f\u0631 \u0644\u0628\u0647 \u0647\u0627\u06cc \u062a\u0639\u0627\u0645\u0644 \u062f\u0631 \u062c\u0631\u06cc\u0627\u0646 \u06a9\u0627\u0631\u0628\u0631 \u06a9\u0646\u0627\u0631 \u0647\u0645 \u0642\u0631\u0627\u0631 \u062f\u0627\u062f. <\/p>\n<p>\u0627\u06cc\u0646 \u0631\u0648\u0634 \u0631\u0646\u062f\u0631 \u0628\u0627\u0639\u062b \u0645\u06cc \u0634\u0648\u062f egui \u0646\u0633\u06cc\u0645\u06cc \u0628\u0631\u0627\u06cc \u06a9\u0627\u0631 \u0648 \u0634\u0631\u0648\u0639. <\/p>\n<p>\u0628\u06cc\u0627\u06cc\u06cc\u062f \u0628\u0628\u06cc\u0646\u06cc\u0645 \u06a9\u0647 \u0622\u06cc\u0627 \u0622\u0646\u0686\u0647 \u0645\u0627 \u067e\u06cc\u0627\u062f\u0647 \u0633\u0627\u0632\u06cc \u06a9\u0631\u062f\u06cc\u0645 \u0648\u0627\u0642\u0639\u0627\u064b \u06a9\u0627\u0631 \u0645\u06cc \u06a9\u0646\u062f \u06cc\u0627 \u062e\u06cc\u0631.<\/p>\n<p>  \u062a\u0633\u062a \u06a9\u0631\u062f\u0646<\/p>\n<p>\u0645\u0627 \u0645\u06cc \u062a\u0648\u0627\u0646\u06cc\u0645 \u0628\u0631\u0646\u0627\u0645\u0647 \u0631\u0627 \u0628\u0627 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 \u0622\u0646 \u0627\u062c\u0631\u0627 \u06a9\u0646\u06cc\u0645 RUST_LOG=info cargo run\u060c \u06a9\u0647 \u06cc\u06a9 \u0631\u0627\u0628\u0637 \u06a9\u0627\u0631\u0628\u0631\u06cc \u06af\u0631\u0627\u0641\u06cc\u06a9\u06cc \u0628\u0647 \u0634\u06a9\u0644 \u0632\u06cc\u0631 \u0628\u0627\u0632 \u0645\u06cc \u06a9\u0646\u062f:    <\/p>\n<p>\u0645\u0627 \u0645\u06cc \u062a\u0648\u0627\u0646\u06cc\u0645 \u06cc\u06a9\u06cc \u0627\u0632 \u062d\u06cc\u0648\u0627\u0646\u0627\u062a \u062e\u0627\u0646\u06af\u06cc \u0631\u0627 \u062f\u0631 \u062d\u0627\u0644\u062a \u0627\u0648\u0644\u06cc\u0647 \u0627\u0646\u062a\u062e\u0627\u0628 \u06a9\u0646\u06cc\u0645 \u0648 \u062c\u0632\u0626\u06cc\u0627\u062a \u0622\u0646 \u062f\u0631 \u0633\u0645\u062a \u0631\u0627\u0633\u062a \u0646\u0634\u0627\u0646 \u062f\u0627\u062f\u0647 \u0645\u06cc \u0634\u0648\u062f. \u0647\u0645\u0686\u0646\u06cc\u0646 \u06cc\u06a9 \u0646\u0634\u0627\u0646\u06af\u0631 \u0628\u0627\u0631\u06af\u06cc\u0631\u06cc \u06a9\u0648\u062a\u0627\u0647 \u0631\u0627 \u0645\u0634\u0627\u0647\u062f\u0647 \u062e\u0648\u0627\u0647\u06cc\u062f \u06a9\u0631\u062f \u06a9\u0647 \u062f\u0631 \u0622\u0646 \u062a\u0635\u0648\u06cc\u0631 \u062a\u0635\u0627\u062f\u0641\u06cc \u06cc\u06a9 \u06af\u0631\u0628\u0647 \u067e\u0633 \u0627\u0632 \u0645\u062f\u062a \u06a9\u0648\u062a\u0627\u0647\u06cc \u0638\u0627\u0647\u0631 \u0645\u06cc \u0634\u0648\u062f. \u0627\u06cc\u0646 \u0631\u0641\u062a\u0627\u0631 \u067e\u06cc\u0634\u200c\u0641\u0631\u0636 \u0639\u0645\u0644\u06a9\u0631\u062f \u0628\u0627\u0631\u06af\u06cc\u0631\u06cc \u062a\u0635\u0648\u06cc\u0631 \u062f\u0631 \u0628\u0627\u0644\u0627 \u0627\u0633\u062a egui_extras: <\/p>\n<p>\u062f\u0631 \u062d\u0627\u0644\u062a \u0627\u0648\u0644\u06cc\u0647 \u06a9\u0647 \u0645\u0627 \u06cc\u06a9 \u062a\u0635\u0648\u06cc\u0631 \u062a\u0635\u0627\u062f\u0641\u06cc \u0633\u06af \u0631\u0627 \u0627\u0632 \u0633\u0627\u06cc\u062a \u062f\u06cc\u06af\u0631\u06cc \u062f\u0631\u06cc\u0627\u0641\u062a \u0645\u06cc \u06a9\u0646\u06cc\u0645\u060c \u0647\u0645\u06cc\u0646 \u06a9\u0627\u0631 \u0628\u0631\u0627\u06cc \u0633\u06af \u0627\u0646\u062c\u0627\u0645 \u0645\u06cc \u0634\u0648\u062f:    <\/p>\n<p>\u062f\u0631 \u0645\u0631\u062d\u0644\u0647 \u0628\u0639\u062f\u060c \u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u06cc\u0645 \u0633\u0639\u06cc \u06a9\u0646\u06cc\u0645 \u0628\u0627 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 \u062f\u06a9\u0645\u0647\u060c \u06cc\u06a9 \u062d\u06cc\u0648\u0627\u0646 \u062e\u0627\u0646\u06af\u06cc \u062c\u062f\u06cc\u062f \u0631\u0627 \u0628\u0647 \u0644\u06cc\u0633\u062a \u0627\u0636\u0627\u0641\u0647 \u06a9\u0646\u06cc\u0645\u060c \u0648 \u0634\u06a9\u0644\u06cc \u06a9\u0647 \u0628\u0627 \u06a9\u0644\u06cc\u06a9 \u062f\u0631 \u067e\u0627\u0646\u0644 \u067e\u06cc\u0645\u0627\u06cc\u0634 \u062f\u0631 \u0633\u0645\u062a \u0686\u067e \u0646\u0634\u0627\u0646 \u0645\u06cc\u200c\u062f\u0647\u062f:    <\/p>\n<p>\u0648 \u06cc\u06a9\u0628\u0627\u0631 \u0632\u062f\u06cc\u0645 Submit\u060c \u0641\u0631\u0645 \u0628\u0627\u0632\u0646\u0634\u0627\u0646\u06cc \u0645\u06cc \u0634\u0648\u062f \u0648 \u06cc\u06a9 \u062d\u06cc\u0648\u0627\u0646 \u062e\u0627\u0646\u06af\u06cc \u062c\u062f\u06cc\u062f \u0628\u0647 \u0644\u06cc\u0633\u062a \u0627\u0636\u0627\u0641\u0647 \u0645\u06cc \u0634\u0648\u062f \u0648 \u0628\u0647 \u0622\u062f\u0631\u0633 \u0632\u06cc\u0631 \u0647\u062f\u0627\u06cc\u062a \u0645\u06cc \u0634\u0648\u062f:    <\/p>\n<p>\u062e\u0648\u0628 \u0627\u0633\u062a\u060c \u06a9\u0627\u0631 \u0645\u06cc \u06a9\u0646\u062f! \u0645\u06cc \u062a\u0648\u0627\u0646\u0633\u062a\u06cc\u0645 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0646\u06cc\u0645 Context::set_style \u0647\u0645\u0627\u0646\u0637\u0648\u0631 \u06a9\u0647 \u062f\u0631 \u0627\u0628\u062a\u062f\u0627 \u0630\u06a9\u0631 \u0634\u062f \u0628\u0631\u0627\u06cc \u0634\u062e\u0635\u06cc \u0633\u0627\u0632\u06cc \u06a9\u0627\u0645\u0644 \u0628\u0631\u0646\u0627\u0645\u0647 \u0627\u0632 \u0646\u0638\u0631 \u0641\u0648\u0646\u062a \u0647\u0627\u060c \u0631\u0646\u06af \u0647\u0627 \u0648 \u0645\u0648\u0627\u0631\u062f \u0645\u0634\u0627\u0628\u0647\u060c \u0627\u0645\u0627 \u0628\u0647 \u0646\u0638\u0631 \u0645\u0646\u060c \u062d\u062a\u06cc \u0633\u0628\u06a9 \u067e\u06cc\u0634 \u0641\u0631\u0636 \u0646\u06cc\u0632 \u0628\u0633\u06cc\u0627\u0631 \u0632\u06cc\u0628\u0627 \u0628\u0647 \u0646\u0638\u0631 \u0645\u06cc \u0631\u0633\u062f\u060c \u0628\u0647 \u062e\u0635\u0648\u0635 \u0632\u0645\u0627\u0646\u06cc \u06a9\u0647 \u0645\u0627 \u0641\u0642\u0637 \u0642\u0635\u062f \u062f\u0627\u0631\u06cc\u0645 \u06cc\u06a9 \u0628\u0631\u0646\u0627\u0645\u0647 \u0646\u0645\u0648\u0646\u0647 \u0628\u0633\u0627\u0632\u06cc\u0645. \u06a9\u062f \u06a9\u0627\u0645\u0644 \u0627\u06cc\u0646 \u0645\u062b\u0627\u0644 \u0631\u0627 \u0645\u06cc \u062a\u0648\u0627\u0646\u06cc\u062f \u062f\u0631 GitHub \u067e\u06cc\u062f\u0627 \u06a9\u0646\u06cc\u062f.<\/p>\n<p>  \u0646\u062a\u06cc\u062c\u0647 \u06af\u06cc\u0631\u06cc<\/p>\n<p>\u062f\u0631 \u0627\u06cc\u0646 \u0645\u0642\u0627\u0644\u0647\u060c \u0645\u0627 \u0646\u06af\u0627\u0647\u06cc \u0628\u0647 \u0646\u062d\u0648\u0647 \u0633\u0627\u062e\u062a \u0628\u0631\u0646\u0627\u0645\u0647\u200c\u0647\u0627\u06cc \u0631\u0627\u0628\u0637 \u06a9\u0627\u0631\u0628\u0631\u06cc \u06af\u0631\u0627\u0641\u06cc\u06a9\u06cc \u0628\u0627 \u062d\u0627\u0644\u062a \u0641\u0648\u0631\u06cc \u06a9\u0631\u0627\u0633 \u067e\u0644\u062a\u0641\u0631\u0645 \u0628\u0627 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 egui \u0648 eframe \u062f\u0631 Rust \u0627\u0646\u062f\u0627\u062e\u062a\u06cc\u0645. <\/p>\n<p>\u0627\u06af\u0631\u0686\u0647 egui \u06cc\u06a9 \u06a9\u062a\u0627\u0628\u062e\u0627\u0646\u0647 \u0646\u0633\u0628\u062a\u0627\u064b \u062c\u062f\u06cc\u062f \u0628\u0631\u0627\u06cc \u0627\u06cc\u062c\u0627\u062f \u0631\u0627\u0628\u0637 \u06a9\u0627\u0631\u0628\u0631\u06cc \u06af\u0631\u0627\u0641\u06cc\u06a9\u06cc \u0627\u0633\u062a\u060c \u0627\u06a9\u0648\u0633\u06cc\u0633\u062a\u0645 \u0627\u0637\u0631\u0627\u0641 \u0622\u0646 \u0639\u0627\u0644\u06cc \u0627\u0633\u062a \u0648 \u062e\u06cc\u0644\u06cc \u0633\u0631\u06cc\u0639 \u062f\u0631 \u062d\u0627\u0644 \u0631\u0634\u062f \u0627\u0633\u062a. \u0634\u0631\u0648\u0639 \u0628\u0647 \u06a9\u0627\u0631 \u0628\u0647 \u062f\u0644\u06cc\u0644 \u0627\u0633\u0646\u0627\u062f \u062e\u0648\u0628 \u0648 \u0628\u0631\u0646\u0627\u0645\u0647\u200c\u0647\u0627\u06cc \u0622\u0632\u0645\u0627\u06cc\u0634\u06cc \u0641\u0631\u0627\u0648\u0627\u0646 \u06a9\u0647 \u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u06cc\u062f \u06a9\u062f \u0645\u0646\u0628\u0639 \u0631\u0627 \u0628\u0631\u0631\u0633\u06cc \u06a9\u0646\u06cc\u062f \u0648 \u0627\u0632 \u0622\u0646\u200c\u0647\u0627 \u0628\u06cc\u0627\u0645\u0648\u0632\u06cc\u062f\u060c \u0628\u0633\u06cc\u0627\u0631 \u0622\u0633\u0627\u0646 \u0627\u0633\u062a. <\/p>\n<p>\u062f\u0631 \u0627\u06cc\u0646 \u0645\u0631\u062d\u0644\u0647\u060c \u0627\u06af\u0631 \u0628\u062e\u0648\u0627\u0647\u0645 \u06cc\u06a9 \u0628\u0631\u0646\u0627\u0645\u0647 \u0631\u0627\u0628\u0637 \u06a9\u0627\u0631\u0628\u0631\u06cc \u06af\u0631\u0627\u0641\u06cc\u06a9\u06cc \u0628\u0627 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 Rust \u0628\u0633\u0627\u0632\u0645\u060c egui \u0627\u0648\u0644\u06cc\u0646 \u0627\u0646\u062a\u062e\u0627\u0628 \u0645\u0646 \u0628\u0631\u0627\u06cc \u0627\u0646\u062c\u0627\u0645 \u0627\u06cc\u0646 \u06a9\u0627\u0631 \u062e\u0648\u0627\u0647\u062f \u0628\u0648\u062f.<\/p>\n<p>  LogRocket: \u062f\u06cc\u062f \u06a9\u0627\u0645\u0644 \u062f\u0631 \u0635\u0641\u062d\u0627\u062a \u0648\u0628 \u0628\u0631\u0627\u06cc \u0628\u0631\u0646\u0627\u0645\u0647 \u0647\u0627\u06cc Rust<\/p>\n<p>\u0627\u0634\u06a9\u0627\u0644 \u0632\u062f\u0627\u06cc\u06cc \u0628\u0631\u0646\u0627\u0645\u0647 \u0647\u0627\u06cc Rust \u0645\u06cc \u062a\u0648\u0627\u0646\u062f \u062f\u0634\u0648\u0627\u0631 \u0628\u0627\u0634\u062f\u060c \u0628\u0647 \u062e\u0635\u0648\u0635 \u0632\u0645\u0627\u0646\u06cc \u06a9\u0647 \u06a9\u0627\u0631\u0628\u0631\u0627\u0646 \u0645\u0634\u06a9\u0644\u0627\u062a\u06cc \u0631\u0627 \u062a\u062c\u0631\u0628\u0647 \u0645\u06cc \u06a9\u0646\u0646\u062f \u06a9\u0647 \u0628\u0627\u0632\u062a\u0648\u0644\u06cc\u062f \u0622\u0646 \u0647\u0627 \u062f\u0634\u0648\u0627\u0631 \u0627\u0633\u062a. \u0627\u06af\u0631 \u0639\u0644\u0627\u0642\u0647 \u0645\u0646\u062f \u0628\u0647 \u0646\u0638\u0627\u0631\u062a \u0648 \u0631\u062f\u06cc\u0627\u0628\u06cc \u0639\u0645\u0644\u06a9\u0631\u062f \u0628\u0631\u0646\u0627\u0645\u0647 \u0647\u0627\u06cc Rust \u062e\u0648\u062f\u060c \u0646\u0645\u0627\u06cc\u0634 \u062e\u0648\u062f\u06a9\u0627\u0631 \u062e\u0637\u0627\u0647\u0627\u060c \u0648 \u067e\u06cc\u06af\u06cc\u0631\u06cc \u062f\u0631\u062e\u0648\u0627\u0633\u062a \u0647\u0627\u06cc \u0634\u0628\u06a9\u0647 \u0648 \u0632\u0645\u0627\u0646 \u0628\u0627\u0631\u06af\u0630\u0627\u0631\u06cc \u06a9\u0646\u062f \u0647\u0633\u062a\u06cc\u062f\u060c LogRocket \u0631\u0627 \u0627\u0645\u062a\u062d\u0627\u0646 \u06a9\u0646\u06cc\u062f.<\/p>\n<p>LogRocket \u0645\u0627\u0646\u0646\u062f \u06cc\u06a9 DVR \u0628\u0631\u0627\u06cc \u0628\u0631\u0646\u0627\u0645\u0647 \u0647\u0627\u06cc \u0648\u0628 \u0648 \u062a\u0644\u0641\u0646 \u0647\u0645\u0631\u0627\u0647 \u0627\u0633\u062a \u06a9\u0647 \u0628\u0647 \u0645\u0639\u0646\u0627\u06cc \u0648\u0627\u0642\u0639\u06cc \u06a9\u0644\u0645\u0647 \u0647\u0631 \u0686\u06cc\u0632\u06cc \u0631\u0627 \u06a9\u0647 \u062f\u0631 \u0628\u0631\u0646\u0627\u0645\u0647 Rust \u0634\u0645\u0627 \u0627\u062a\u0641\u0627\u0642 \u0645\u06cc \u0627\u0641\u062a\u062f \u0636\u0628\u0637 \u0645\u06cc \u06a9\u0646\u062f. \u0628\u0647 \u062c\u0627\u06cc \u062d\u062f\u0633 \u0632\u062f\u0646 \u0686\u0631\u0627\u06cc\u06cc \u0645\u0634\u06a9\u0644\u0627\u062a\u060c \u0645\u06cc \u062a\u0648\u0627\u0646\u06cc\u062f \u062f\u0631 \u0645\u0648\u0631\u062f \u0648\u0636\u0639\u06cc\u062a\u06cc \u06a9\u0647 \u0628\u0631\u0646\u0627\u0645\u0647 \u0634\u0645\u0627 \u062f\u0631 \u0647\u0646\u06af\u0627\u0645 \u0628\u0631\u0648\u0632 \u0645\u0634\u06a9\u0644 \u062f\u0631 \u0622\u0646 \u0642\u0631\u0627\u0631 \u062f\u0627\u0634\u062a\u060c \u062c\u0645\u0639 \u0622\u0648\u0631\u06cc \u06a9\u0631\u062f\u0647 \u0648 \u06af\u0632\u0627\u0631\u0634 \u062f\u0647\u06cc\u062f. LogRocket \u0647\u0645\u0686\u0646\u06cc\u0646 \u0639\u0645\u0644\u06a9\u0631\u062f \u0628\u0631\u0646\u0627\u0645\u0647 \u0634\u0645\u0627 \u0631\u0627 \u0646\u0638\u0627\u0631\u062a \u0645\u06cc \u06a9\u0646\u062f\u060c \u0645\u0639\u06cc\u0627\u0631\u0647\u0627\u06cc\u06cc \u0645\u0627\u0646\u0646\u062f \u0628\u0627\u0631 CPU \u0645\u0634\u062a\u0631\u06cc\u060c \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 \u062d\u0627\u0641\u0638\u0647 \u0645\u0634\u062a\u0631\u06cc \u0648 \u0645\u0648\u0627\u0631\u062f \u062f\u06cc\u06af\u0631 \u0631\u0627 \u06af\u0632\u0627\u0631\u0634 \u0645\u06cc \u062f\u0647\u062f.<\/p>\n<p>\u0646\u062d\u0648\u0647 \u0627\u0634\u06a9\u0627\u0644 \u0632\u062f\u0627\u06cc\u06cc \u0628\u0631\u0646\u0627\u0645\u0647 \u0647\u0627\u06cc Rust \u062e\u0648\u062f \u0631\u0627 \u0645\u062f\u0631\u0646 \u06a9\u0646\u06cc\u062f &#8211; \u0646\u0638\u0627\u0631\u062a \u0631\u0627 \u0628\u0647 \u0635\u0648\u0631\u062a \u0631\u0627\u06cc\u06af\u0627\u0646 \u0634\u0631\u0648\u0639 \u06a9\u0646\u06cc\u062f.<\/p>\n<div data-article-id=\"1973816\" id=\"article-body\">\n<p><strong>\u0646\u0648\u0634\u062a\u0647 \u0645\u0627\u0631\u06cc\u0648 \u0632\u0648\u067e\u0627\u0646\u270f\ufe0f<\/strong><\/p>\n<p>\u0627\u0632 \u0632\u0645\u0627\u0646 \u0638\u0647\u0648\u0631 Electron\u060c \u06a9\u0647 \u0645\u0646\u062c\u0631 \u0628\u0647 \u06a9\u0645\u06cc \u0631\u0646\u0633\u0627\u0646\u0633 \u0628\u0631\u0646\u0627\u0645\u0647 \u0647\u0627\u06cc \u062f\u0633\u06a9\u062a\u0627\u067e \u0645\u062a\u0642\u0627\u0628\u0644 \u067e\u0644\u062a \u0641\u0631\u0645 \u0628\u0627 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 \u0641\u0646\u0627\u0648\u0631\u06cc \u0648\u0628 \u0634\u062f\u060c \u0645\u062d\u062f\u0648\u062f\u06cc\u062a \u0647\u0627\u06cc \u0627\u06cc\u0646 \u0631\u0648\u06cc\u06a9\u0631\u062f \u0622\u0634\u06a9\u0627\u0631 \u0634\u062f. \u0632\u0645\u0627\u0646 \u0622\u0647\u0633\u062a\u0647 \u0631\u0627\u0647 \u0627\u0646\u062f\u0627\u0632\u06cc\u060c \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 \u0645\u0646\u0627\u0628\u0639 \u0628\u0633\u06cc\u0627\u0631 \u0628\u0627\u0644\u0627\u060c \u0648 \u0645\u062d\u062f\u0648\u062f\u06cc\u062a \u0647\u0627\u06cc \u0641\u0646\u0627\u0648\u0631\u06cc \u0648\u0628 \u0628\u0631\u0627\u06cc \u0633\u0627\u062e\u062a \u0628\u0631\u0646\u0627\u0645\u0647 \u0647\u0627\u06cc \u0631\u0627\u0628\u0637 \u06a9\u0627\u0631\u0628\u0631\u06cc \u06af\u0631\u0627\u0641\u06cc\u06a9\u06cc \u0628\u0627 \u0648\u0641\u0627\u062f\u0627\u0631\u06cc \u0628\u0627\u0644\u0627\u060c \u0647\u0645\u0686\u0646\u0627\u0646 \u06a9\u0627\u0631\u0628\u0631\u0627\u0646 \u0628\u0633\u06cc\u0627\u0631\u06cc \u0627\u0632 \u0628\u0631\u0646\u0627\u0645\u0647 \u0647\u0627\u06cc \u06a9\u0627\u0631\u0628\u0631\u062f\u06cc \u0645\u0628\u062a\u0646\u06cc \u0628\u0631 \u0627\u0644\u06a9\u062a\u0631\u0648\u0646 \u0631\u0627 \u062a\u0627 \u0628\u0647 \u0627\u0645\u0631\u0648\u0632 \u0622\u0632\u0627\u0631 \u0645\u06cc \u062f\u0647\u062f. <\/p>\n<p>Electron \u0633\u0627\u062e\u062a \u0627\u067e\u0644\u06cc\u06a9\u06cc\u0634\u0646\u200c\u0647\u0627\u06cc \u062f\u0633\u06a9\u200c\u062a\u0627\u067e \u0686\u0646\u062f \u067e\u0644\u062a\u0641\u0631\u0645\u06cc \u0631\u0627 \u0628\u0633\u06cc\u0627\u0631 \u0642\u0627\u0628\u0644 \u062f\u0633\u062a\u0631\u0633\u200c\u062a\u0631 \u0627\u0632 \u0631\u0648\u06cc\u06a9\u0631\u062f\u0647\u0627\u06cc \u0642\u0628\u0644\u06cc \u062e\u0648\u062f \u06a9\u0631\u062f\u060c \u0627\u0645\u0627 \u0645\u0637\u0645\u0626\u0646\u0627\u064b \u067e\u0627\u0633\u062e \u0647\u0645\u0647 \u0686\u06cc\u0632 \u0646\u0628\u0648\u062f. \u0645\u0634\u06a9\u0644 \u0633\u0627\u062e\u062a \u0628\u0631\u0646\u0627\u0645\u0647 \u0647\u0627\u06cc \u06a9\u0627\u0631\u0628\u0631\u062f\u06cc \u0686\u0646\u062f \u067e\u0644\u062a\u0641\u0631\u0645\u06cc \u063a\u0646\u06cc\u060c \u0628\u0633\u06cc\u0627\u0631 \u06a9\u0627\u0631\u0622\u0645\u062f \u0648 \u0642\u0648\u06cc \u0647\u0646\u0648\u0632 \u062d\u0644 \u0646\u0634\u062f\u0647 \u0627\u0633\u062a \u0648 \u0648\u0639\u062f\u0647 &#8220;\u06cc\u06a9 \u0628\u0627\u0631 \u0628\u0633\u0627\u0632\u06cc\u062f\u060c \u0647\u0631 \u062c\u0627 \u0627\u062c\u0631\u0627 \u06a9\u0646\u06cc\u062f&#8221; \u0647\u0646\u0648\u0632 \u062f\u0631 \u0647\u06cc\u0686 \u06cc\u06a9 \u0627\u0632 \u0641\u0646\u0627\u0648\u0631\u06cc \u0647\u0627\u06cc \u0645\u0648\u062c\u0648\u062f \u062f\u0631 \u062d\u0627\u0644 \u062d\u0627\u0636\u0631 \u0622\u0634\u06a9\u0627\u0631 \u0646\u0634\u062f\u0647 \u0627\u0633\u062a. <\/p>\n<p>\u0628\u0627 \u0627\u06cc\u0646 \u062d\u0627\u0644\u060c \u0628\u0627 \u0639\u0644\u0627\u0642\u0647\u200c\u0645\u0646\u062f\u06cc \u062c\u062f\u06cc\u062f \u0628\u0647 \u0628\u0631\u0646\u0627\u0645\u0647\u200c\u0647\u0627\u06cc \u062f\u0633\u06a9\u062a\u0627\u067e \u0645\u062a\u0642\u0627\u0628\u0644 \u067e\u0644\u062a\u0641\u0631\u0645 \u0648 \u0628\u0647\u0628\u0648\u062f \u067e\u0644\u062a\u0641\u0631\u0645 \u0648\u0628 \u062f\u0631 \u0627\u0645\u062a\u062f\u0627\u062f \u062e\u0637\u0648\u0637 WebGL\/WebGPU\u060c \u0648 \u0647\u0645\u0686\u0646\u06cc\u0646 WebAssembly\u060c \u067e\u0631\u0648\u0698\u0647\u200c\u0647\u0627\u06cc \u062c\u0627\u0644\u0628 \u0632\u06cc\u0627\u062f\u06cc \u0628\u0647 \u0648\u062c\u0648\u062f \u0622\u0645\u062f\u0646\u062f \u06a9\u0647 \u062a\u0644\u0627\u0634 \u0645\u06cc\u200c\u06a9\u0646\u0646\u062f \u06af\u0627\u0645\u200c\u0647\u0627\u06cc \u0628\u0639\u062f\u06cc \u0631\u0627 \u062f\u0631 \u062a\u0644\u0627\u0634 \u0628\u0631\u0627\u06cc \u0633\u0627\u062e\u062a\u0646 \u0628\u0631\u062f\u0627\u0631\u0646\u062f. \u067e\u0627\u06cc\u0647 \u0648 \u0627\u0633\u0627\u0633 \u0628\u0631\u0646\u0627\u0645\u0647 \u0647\u0627\u06cc \u06a9\u0627\u0631\u0628\u0631\u062f\u06cc \u0631\u0627\u0628\u0637 \u06a9\u0627\u0631\u0628\u0631\u06cc \u06af\u0631\u0627\u0641\u06cc\u06a9\u06cc \u06a9\u0631\u0627\u0633 \u067e\u0644\u062a\u0641\u0631\u0645. <\/p>\n<p>\u06cc\u06a9\u06cc \u0627\u0632 \u0627\u06cc\u0646 \u067e\u0631\u0648\u0698\u0647 \u0647\u0627 \u06a9\u0647 \u0628\u0627 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 Rust \u0633\u0627\u062e\u062a\u0647 \u0634\u062f\u0647 \u0627\u0633\u062a\u060c egui \u0627\u0633\u062a. \u062f\u0631 \u0627\u06cc\u0646 \u0645\u0642\u0627\u0644\u0647\u060c \u062e\u0648\u0627\u0647\u06cc\u0645 \u062f\u06cc\u062f \u06a9\u0647 \u0686\u06af\u0648\u0646\u0647 \u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u06cc\u0645 \u06cc\u06a9 \u0628\u0631\u0646\u0627\u0645\u0647 \u06af\u0631\u0627\u0641\u06cc\u06a9\u06cc \u0633\u0627\u062f\u0647 \u0648 \u0686\u0646\u062f \u067e\u0644\u062a\u0641\u0631\u0645\u06cc \u0628\u0627 \u0622\u0646 \u0628\u0633\u0627\u0632\u06cc\u0645. <\/p>\n<p>\u0645\u0627 \u0642\u0635\u062f \u062f\u0627\u0631\u06cc\u0645 \u06cc\u06a9 \u0628\u0631\u0646\u0627\u0645\u0647 \u0645\u062f\u06cc\u0631\u06cc\u062a \u062d\u06cc\u0648\u0627\u0646\u0627\u062a \u062e\u0627\u0646\u06af\u06cc \u0628\u0633\u06cc\u0627\u0631 \u0633\u0627\u062f\u0647 \u0628\u0633\u0627\u0632\u06cc\u0645 \u06a9\u0647 \u0628\u0647 \u0645\u0627 \u0627\u0645\u06a9\u0627\u0646 \u0645\u06cc \u062f\u0647\u062f \u062d\u06cc\u0648\u0627\u0646\u0627\u062a \u062e\u0627\u0646\u06af\u06cc \u0631\u0627 \u0627\u0636\u0627\u0641\u0647 \u0648 \u062d\u0630\u0641 \u06a9\u0646\u06cc\u0645 \u0648 \u0644\u06cc\u0633\u062a \u0648 \u0646\u0645\u0627\u06cc \u062c\u0632\u0626\u06cc\u0627\u062a \u0631\u0627 \u0628\u0647 \u0645\u0627 \u0646\u0634\u0627\u0646 \u0645\u06cc \u062f\u0647\u062f. <\/p>\n<p>\u0628\u0631\u0627\u06cc \u0627\u06cc\u0646\u06a9\u0647 \u06a9\u0644 \u0645\u0648\u0636\u0648\u0639 \u062c\u0627\u0644\u0628 \u062a\u0631 \u0634\u0648\u062f\u060c \u0627\u0632 \u06cc\u06a9 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc \u06a9\u0646\u06cc\u0645 <code>sqlite<\/code> \u067e\u0627\u06cc\u06af\u0627\u0647 \u062f\u0627\u062f\u0647 \u0628\u0631\u0627\u06cc \u0630\u062e\u06cc\u0631\u0647 \u0633\u0627\u0632\u06cc \u062f\u0627\u062f\u0647 \u0647\u0627\u060c \u0648 \u0647\u0631 \u0632\u0645\u0627\u0646 \u06a9\u0647 \u0635\u0641\u062d\u0647 \u062c\u0632\u0626\u06cc\u0627\u062a \u062d\u06cc\u0648\u0627\u0646 \u062e\u0627\u0646\u06af\u06cc \u0628\u0627\u0632 \u0634\u0648\u062f\u060c \u062a\u0635\u0648\u06cc\u0631\u06cc \u062a\u0635\u0627\u062f\u0641\u06cc \u0627\u0632 \u06cc\u06a9 \u06af\u0631\u0628\u0647 \u06cc\u0627 \u0633\u06af \u062f\u0631\u06cc\u0627\u0641\u062a \u0645\u06cc \u06a9\u0646\u06cc\u0645. <\/p>\n<p>\u0627\u0645\u0627 \u0627\u0628\u062a\u062f\u0627\u060c \u0628\u06cc\u0627\u06cc\u06cc\u062f \u06a9\u0645\u06cc \u0628\u06cc\u0634\u062a\u0631 \u062f\u0631 \u0645\u0648\u0631\u062f egui \u0648 \u062f\u0644\u06cc\u0644 \u062c\u0627\u0644\u0628 \u0628\u0648\u062f\u0646 \u0622\u0646 \u0628\u06cc\u0627\u0645\u0648\u0632\u06cc\u0645.<\/p>\n<div id=\"ez-toc-container\" class=\"ez-toc-v2_0_86 counter-hierarchy ez-toc-counter-rtl ez-toc-grey ez-toc-container-direction\">\n<div class=\"ez-toc-title-container\">\n<p class=\"ez-toc-title\" style=\"cursor:inherit\">\u0641\u0647\u0631\u0633\u062a \u0645\u0637\u0627\u0644\u0628<\/p>\n<span class=\"ez-toc-title-toggle\"><a href=\"#\" class=\"ez-toc-pull-right ez-toc-btn ez-toc-btn-xs ez-toc-btn-default ez-toc-toggle\" aria-label=\"\u062a\u063a\u06cc\u06cc\u0631 \u0648\u0636\u0639\u06cc\u062a \u0641\u0647\u0631\u0633\u062a \u0645\u0637\u0627\u0644\u0628\"><span class=\"ez-toc-js-icon-con\"><span class=\"\"><span class=\"eztoc-hide\" style=\"display:none;\">Toggle<\/span><span class=\"ez-toc-icon-toggle-span\"><svg style=\"fill: #999;color:#999\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" class=\"list-377408\" width=\"20px\" height=\"20px\" viewBox=\"0 0 24 24\" fill=\"none\"><path d=\"M6 6H4v2h2V6zm14 0H8v2h12V6zM4 11h2v2H4v-2zm16 0H8v2h12v-2zM4 16h2v2H4v-2zm16 0H8v2h12v-2z\" fill=\"currentColor\"><\/path><\/svg><svg style=\"fill: #999;color:#999\" class=\"arrow-unsorted-368013\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"10px\" height=\"10px\" viewBox=\"0 0 24 24\" version=\"1.2\" baseProfile=\"tiny\"><path d=\"M18.2 9.3l-6.2-6.3-6.2 6.3c-.2.2-.3.4-.3.7s.1.5.3.7c.2.2.4.3.7.3h11c.3 0 .5-.1.7-.3.2-.2.3-.5.3-.7s-.1-.5-.3-.7zM5.8 14.7l6.2 6.3 6.2-6.3c.2-.2.3-.5.3-.7s-.1-.5-.3-.7c-.2-.2-.4-.3-.7-.3h-11c-.3 0-.5.1-.7.3-.2.2-.3.5-.3.7s.1.5.3.7z\"\/><\/svg><\/span><\/span><\/span><\/a><\/span><\/div>\n<nav><ul class='ez-toc-list ez-toc-list-level-1 ' ><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-1\" href=\"https:\/\/nabfollower.com\/blog\/building-cross-platform-gui-apps-in-rust-using-egui-42la\/#egui_eframe\" >egui \/ eframe<\/a><ul class='ez-toc-list-level-3' ><li class='ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-2\" href=\"https:\/\/nabfollower.com\/blog\/building-cross-platform-gui-apps-in-rust-using-egui-42la\/#%D8%B3%D9%81%D8%A7%D8%B1%D8%B4%DB%8C_%D8%B3%D8%A7%D8%B2%DB%8C_%D9%88_%D8%AF%D8%B3%D8%AA%D8%B1%D8%B3%DB%8C\" >\u0633\u0641\u0627\u0631\u0634\u06cc \u0633\u0627\u0632\u06cc \u0648 \u062f\u0633\u062a\u0631\u0633\u06cc<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-3\" href=\"https:\/\/nabfollower.com\/blog\/building-cross-platform-gui-apps-in-rust-using-egui-42la\/#%DA%A9%D8%B1%D8%A7%D8%B3_%D9%BE%D9%84%D8%AA%D9%81%D8%B1%D9%85_%D9%88_%D9%88%D8%A8\" >\u06a9\u0631\u0627\u0633 \u067e\u0644\u062a\u0641\u0631\u0645 \u0648 \u0648\u0628<\/a><\/li><\/ul><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-4\" href=\"https:\/\/nabfollower.com\/blog\/building-cross-platform-gui-apps-in-rust-using-egui-42la\/#%D8%B1%D8%A7%D9%87_%D8%A7%D9%86%D8%AF%D8%A7%D8%B2%DB%8C\" >\u0631\u0627\u0647 \u0627\u0646\u062f\u0627\u0632\u06cc<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-5\" href=\"https:\/\/nabfollower.com\/blog\/building-cross-platform-gui-apps-in-rust-using-egui-42la\/#%D9%85%D8%AF%D9%84_%D8%AF%D8%A7%D8%AF%D9%87\" >\u0645\u062f\u0644 \u062f\u0627\u062f\u0647<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-6\" href=\"https:\/\/nabfollower.com\/blog\/building-cross-platform-gui-apps-in-rust-using-egui-42la\/#%D9%88%D8%A7%DA%A9%D8%B4%DB%8C_%D8%AA%D8%B5%D8%A7%D9%88%DB%8C%D8%B1_%D8%AA%D8%B5%D8%A7%D8%AF%D9%81%DB%8C_%D8%A8%D8%B1%D8%A7%DB%8C_%DA%AF%D8%B1%D8%A8%D9%87_%D9%87%D8%A7_%D9%88_%D8%B3%DA%AF_%D9%87%D8%A7\" >\u0648\u0627\u06a9\u0634\u06cc \u062a\u0635\u0627\u0648\u06cc\u0631 \u062a\u0635\u0627\u062f\u0641\u06cc \u0628\u0631\u0627\u06cc \u06af\u0631\u0628\u0647 \u0647\u0627 \u0648 \u0633\u06af \u0647\u0627<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-7\" href=\"https:\/\/nabfollower.com\/blog\/building-cross-platform-gui-apps-in-rust-using-egui-42la\/#%D8%B1%D8%B3%DB%8C%D8%AF%DA%AF%DB%8C_%D8%A8%D9%87_%D8%B1%D9%88%DB%8C%D8%AF%D8%A7%D8%AF\" >\u0631\u0633\u06cc\u062f\u06af\u06cc \u0628\u0647 \u0631\u0648\u06cc\u062f\u0627\u062f<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-8\" href=\"https:\/\/nabfollower.com\/blog\/building-cross-platform-gui-apps-in-rust-using-egui-42la\/#%D8%B3%D8%A7%D8%AE%D8%AA_%D8%B1%D8%A7%D8%A8%D8%B7_%DA%A9%D8%A7%D8%B1%D8%A8%D8%B1%DB%8C_%DA%AF%D8%B1%D8%A7%D9%81%DB%8C%DA%A9%DB%8C\" >\u0633\u0627\u062e\u062a \u0631\u0627\u0628\u0637 \u06a9\u0627\u0631\u0628\u0631\u06cc \u06af\u0631\u0627\u0641\u06cc\u06a9\u06cc<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-9\" href=\"https:\/\/nabfollower.com\/blog\/building-cross-platform-gui-apps-in-rust-using-egui-42la\/#%D8%AA%D8%B3%D8%AA_%DA%A9%D8%B1%D8%AF%D9%86\" >\u062a\u0633\u062a \u06a9\u0631\u062f\u0646<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-10\" href=\"https:\/\/nabfollower.com\/blog\/building-cross-platform-gui-apps-in-rust-using-egui-42la\/#%D9%86%D8%AA%DB%8C%D8%AC%D9%87_%DA%AF%DB%8C%D8%B1%DB%8C\" >\u0646\u062a\u06cc\u062c\u0647 \u06af\u06cc\u0631\u06cc<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-11\" href=\"https:\/\/nabfollower.com\/blog\/building-cross-platform-gui-apps-in-rust-using-egui-42la\/#LogRocket_%D8%AF%DB%8C%D8%AF_%DA%A9%D8%A7%D9%85%D9%84_%D8%AF%D8%B1_%D8%B5%D9%81%D8%AD%D8%A7%D8%AA_%D9%88%D8%A8_%D8%A8%D8%B1%D8%A7%DB%8C_%D8%A8%D8%B1%D9%86%D8%A7%D9%85%D9%87_%D9%87%D8%A7%DB%8C_Rust\" >LogRocket: \u062f\u06cc\u062f \u06a9\u0627\u0645\u0644 \u062f\u0631 \u0635\u0641\u062d\u0627\u062a \u0648\u0628 \u0628\u0631\u0627\u06cc \u0628\u0631\u0646\u0627\u0645\u0647 \u0647\u0627\u06cc Rust<\/a><\/li><\/ul><\/nav><\/div>\n<h2><span class=\"ez-toc-section\" id=\"egui_eframe\"><\/span>\n<p>  egui \/ eframe<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>Egui \u06cc\u06a9 \u06a9\u062a\u0627\u0628\u062e\u0627\u0646\u0647\/\u0686\u0627\u0631\u0686\u0648\u0628 \u0631\u0627\u0628\u0637 \u06a9\u0627\u0631\u0628\u0631\u06cc \u06af\u0631\u0627\u0641\u06cc\u06a9\u06cc \u0645\u0628\u062a\u0646\u06cc \u0628\u0631 Rust \u0648 \u062d\u0627\u0644\u062a \u0641\u0648\u0631\u06cc \u0627\u0633\u062a \u06a9\u0647 \u0628\u0631 \u0633\u0647\u0648\u0644\u062a \u0627\u0633\u062a\u0641\u0627\u062f\u0647\u060c \u067e\u0627\u0633\u062e\u06af\u0648\u06cc\u06cc \u0648 \u0642\u0627\u0628\u0644\u06cc\u062a \u062d\u0645\u0644 \u062a\u0645\u0631\u06a9\u0632 \u062f\u0627\u0631\u062f. <\/p>\n<p>\u0627\u0645\u0627 \u0635\u0628\u0631 \u06a9\u0646\u06cc\u062f\u060c &#8220;\u062d\u0627\u0644\u062a \u0641\u0648\u0631\u06cc&#8221; \u0628\u0647 \u0686\u0647 \u0645\u0639\u0646\u0627\u0633\u062a\u061f \u062e\u0648\u0628\u060c \u062f\u0631 \u062f\u0646\u06cc\u0627\u06cc \u0631\u0627\u0628\u0637\u200c\u0647\u0627\u06cc \u06a9\u0627\u0631\u0628\u0631\u06cc \u06af\u0631\u0627\u0641\u06cc\u06a9\u06cc\u060c \u062f\u0648 \u0631\u0627\u0647 \u06a9\u0644\u06cc \u0628\u0631\u0627\u06cc \u0633\u0627\u062e\u062a \u0628\u0631\u0646\u0627\u0645\u0647\u200c\u0647\u0627 \u0648\u062c\u0648\u062f \u062f\u0627\u0631\u062f &#8211; \u062d\u0627\u0644\u062a \u062d\u0641\u0638 \u0634\u062f\u0647 \u0648 \u062d\u0627\u0644\u062a \u0641\u0648\u0631\u06cc\u060c \u0628\u0627 \u062d\u0627\u0644\u062a \u062d\u0641\u0638 \u0634\u062f\u0647 \u06a9\u0647 \u0628\u06cc\u0634\u062a\u0631 \u0645\u0648\u0627\u0631\u062f\u06cc \u0631\u0627 \u06a9\u0647 \u0627\u062d\u062a\u0645\u0627\u0644\u0627\u064b \u062f\u0631 \u0645\u0648\u0631\u062f \u0686\u0627\u0631\u0686\u0648\u0628\u200c\u0647\u0627\u06cc \u0631\u0627\u0628\u0637 \u06a9\u0627\u0631\u0628\u0631\u06cc \u06af\u0631\u0627\u0641\u06cc\u06a9\u06cc (\u0645\u0627\u0646\u0646\u062f QT \u06cc\u0627 DOM) \u0645\u06cc\u200c\u062f\u0627\u0646\u06cc\u062f \u067e\u0648\u0634\u0634 \u0645\u06cc\u200c\u062f\u0647\u062f. <\/p>\n<p>\u062d\u0627\u0644\u062a \u0641\u0648\u0631\u06cc\u060c \u06a9\u0647 \u0628\u0631\u0627\u06cc \u0627\u0648\u0644\u06cc\u0646 \u0628\u0627\u0631 \u062f\u0631 \u0627\u06cc\u0646 \u0648\u06cc\u062f\u06cc\u0648 \u062a\u0648\u0633\u0637 \u06a9\u06cc\u0633\u06cc \u0645\u0648\u0631\u0627\u062a\u0648\u0631\u06cc \u062f\u0631 \u0633\u0627\u0644 2005 \u0630\u06a9\u0631 \u0634\u062f\u060c \u0628\u0627 \u0633\u0627\u062f\u0647\u200c\u0633\u0627\u0632\u06cc \u0631\u0648\u06cc\u06a9\u0631\u062f \u062a\u0639\u0627\u0645\u0644\u060c \u0631\u0648\u06cc\u06a9\u0631\u062f \u0645\u062a\u0641\u0627\u0648\u062a\u06cc \u0646\u0633\u0628\u062a \u0628\u0647 \u0631\u0627\u0628\u0637 \u06a9\u0627\u0631\u0628\u0631\u06cc \u062d\u0627\u0644\u062a \u062d\u0641\u0638 \u0634\u062f\u0647 \u062f\u0627\u0631\u062f. <\/p>\n<p>\u0628\u0647\u200c\u062c\u0627\u06cc \u0627\u0641\u0632\u0648\u062f\u0646 \u06a9\u0646\u062a\u0631\u0644\u200c\u06a9\u0646\u0646\u062f\u0647\u200c\u0647\u0627\u06cc \u067e\u0627\u0633\u062e \u0628\u0647 \u062a\u0645\u0627\u0633 \u0628\u0647 \u0639\u0646\u0627\u0635\u0631\u060c \u0645\u0627\u0646\u0646\u062f \u062f\u06a9\u0645\u0647\u200c\u0647\u0627\u060c \u062f\u0631 \u062d\u0627\u0644\u06cc \u06a9\u0647 \u0639\u0646\u0635\u0631 \u062f\u0631 \u0628\u0631\u0646\u0627\u0645\u0647 \u0631\u0627\u0628\u0637 \u06a9\u0627\u0631\u0628\u0631\u06cc \u06af\u0631\u0627\u0641\u06cc\u06a9\u06cc \u00ab\u062d\u0641\u0638\u00bb \u0645\u06cc\u200c\u0634\u0648\u062f \u0648 \u0641\u0642\u0637 \u0628\u0631 \u0627\u0633\u0627\u0633 \u062f\u0631\u062e\u0648\u0627\u0633\u062a \u062a\u063a\u06cc\u06cc\u0631 \u0645\u06cc\u200c\u06a9\u0646\u062f\u060c \u062f\u0631 \u062d\u0627\u0644\u062a \u0641\u0648\u0631\u06cc\u060c \u0647\u0631 \u0639\u0646\u0635\u0631 \u0631\u0648\u06cc \u0635\u0641\u062d\u0647 \u062f\u0631 \u0647\u0631 \u0641\u0631\u06cc\u0645 \u0646\u0645\u0627\u06cc\u0634 \u062f\u0627\u062f\u0647 \u0645\u06cc\u200c\u0634\u0648\u062f\u060c \u0628\u0646\u0627\u0628\u0631\u0627\u06cc\u0646 \u0647\u0631\u06af\u0648\u0646\u0647 \u062a\u0639\u0627\u0645\u0644\u06cc \u0627\u0646\u062c\u0627\u0645 \u0645\u06cc\u200c\u0634\u0648\u062f. \u0641\u0648\u0631\u06cc <\/p>\n<p>\u0627\u06cc\u0646 \u062a\u0641\u0627\u0648\u062a \u0628\u0631\u062e\u06cc \u0645\u0639\u0627\u0648\u0636\u0647 \u0647\u0627 \u0631\u0627 \u0628\u0647 \u0647\u0645\u0631\u0627\u0647 \u062f\u0627\u0631\u062f. \u0628\u0647 \u0639\u0646\u0648\u0627\u0646 \u0645\u062b\u0627\u0644\u060c \u0686\u06cc\u062f\u0645\u0627\u0646 \u067e\u06cc\u0686\u06cc\u062f\u0647 \u062f\u0631 \u0631\u0627\u0628\u0637 \u06a9\u0627\u0631\u0628\u0631\u06cc \u06af\u0631\u0627\u0641\u06cc\u06a9\u06cc \u062d\u0627\u0644\u062a \u0641\u0648\u0631\u06cc \u0628\u0633\u06cc\u0627\u0631 \u0633\u062e\u062a \u062a\u0631 \u0627\u0633\u062a\u060c \u0632\u06cc\u0631\u0627 \u0627\u0637\u0644\u0627\u0639\u0627\u062a \u0632\u06cc\u0627\u062f\u06cc \u062f\u0631 \u0645\u0648\u0631\u062f \u0647\u0631 \u0641\u0631\u06cc\u0645 \u0646\u062f\u0627\u0631\u06cc\u062f. \u0631\u0627\u0647\u200c\u062d\u0644\u200c\u0647\u0627\u06cc\u06cc \u0628\u0631\u0627\u06cc \u0627\u06cc\u0646 \u06a9\u0627\u0631 \u0648\u062c\u0648\u062f \u062f\u0627\u0631\u062f\u060c \u0627\u0645\u0627 \u062f\u0631 \u0631\u0627\u0628\u0637 \u06a9\u0627\u0631\u0628\u0631\u06cc \u06af\u0631\u0627\u0641\u06cc\u06a9\u06cc \u062d\u0627\u0644\u062a \u062d\u0641\u0638 \u0634\u062f\u0647 \u0622\u0633\u0627\u0646\u200c\u062a\u0631 \u0627\u0633\u062a. <\/p>\n<p>\u0628\u0647 \u0637\u0648\u0631 \u06a9\u0644\u06cc\u060c \u0633\u0627\u062e\u062a\u0646 \u0648 \u0627\u0633\u062a\u062f\u0644\u0627\u0644 \u062f\u0631 \u0645\u0648\u0631\u062f \u0631\u0627\u0628\u0637\u200c\u0647\u0627\u06cc \u06a9\u0627\u0631\u0628\u0631\u06cc \u06af\u0631\u0627\u0641\u06cc\u06a9\u06cc \u062d\u0627\u0644\u062a \u0641\u0648\u0631\u06cc \u0628\u0633\u06cc\u0627\u0631 \u0633\u0627\u062f\u0647\u200c\u062a\u0631 \u0627\u0633\u062a\u060c \u0632\u06cc\u0631\u0627 \u062a\u0639\u0627\u0645\u0644 \u0647\u0645\u0632\u0645\u0627\u0646\u200c\u062a\u0631 \u0627\u0633\u062a\u060c \u06a9\u0647 \u0645\u0634\u06a9\u0644 \u0648\u0636\u0639\u06cc\u062a \u0628\u0631\u0646\u0627\u0645\u0647 \u0648 \u0646\u0627\u0647\u0645\u06af\u0627\u0645 \u0628\u0648\u062f\u0646 \u0622\u0646\u0686\u0647 \u0631\u0627 \u06a9\u0647 \u0631\u0648\u06cc \u0635\u0641\u062d\u0647 \u0646\u0645\u0627\u06cc\u0634 \u062f\u0627\u062f\u0647 \u0645\u06cc\u200c\u0634\u0648\u062f\u060c \u0628\u0631\u0637\u0631\u0641 \u0645\u06cc\u200c\u06a9\u0646\u062f. \u0627\u06cc\u0646 \u06cc\u06a9 \u0645\u0634\u06a9\u0644 \u0627\u0635\u0644\u06cc \u062f\u0631 \u0631\u0627\u0628\u0637 \u06a9\u0627\u0631\u0628\u0631\u06cc \u06af\u0631\u0627\u0641\u06cc\u06a9\u06cc \u062d\u0627\u0644\u062a \u062d\u0641\u0638 \u0634\u062f\u0647 \u0627\u0633\u062a. <\/p>\n<p>\u0634\u0646\u0627\u062e\u062a\u0647 \u0634\u062f\u0647 \u062a\u0631\u06cc\u0646 \u0686\u0627\u0631\u0686\u0648\u0628 \u0631\u0627\u0628\u0637 \u06a9\u0627\u0631\u0628\u0631\u06cc \u06af\u0631\u0627\u0641\u06cc\u06a9\u06cc \u062d\u0627\u0644\u062a \u0641\u0648\u0631\u06cc\u060c \u06a9\u0647 egui \u0646\u06cc\u0632 \u0627\u0632 \u0622\u0646 \u0627\u0644\u0647\u0627\u0645 \u06af\u0631\u0641\u062a\u0647 \u0634\u062f\u0647\u060c Dear imgui \u0627\u0633\u062a. \u0645\u062e\u0632\u0646 egui \u0647\u0645\u0686\u0646\u06cc\u0646 \u062f\u0627\u0631\u0627\u06cc \u06cc\u06a9 \u0628\u062e\u0634 \u062f\u0631 \u0645\u0648\u0631\u062f \u0645\u0639\u0627\u0648\u0636\u0647 \u0647\u0627 \u062f\u0631 \u0631\u0627\u0628\u0637\u0647 \u0628\u0627 \u0631\u0627\u0628\u0637 \u06a9\u0627\u0631\u0628\u0631\u06cc \u06af\u0631\u0627\u0641\u06cc\u06a9\u06cc \u062d\u0627\u0644\u062a \u0641\u0648\u0631\u06cc \u0627\u0633\u062a \u06a9\u0647 \u0645\u0646 \u0642\u0637\u0639\u0627\u064b \u062a\u0648\u0635\u06cc\u0647 \u0645\u06cc \u06a9\u0646\u0645 \u0622\u0646 \u0631\u0627 \u0628\u0631\u0631\u0633\u06cc \u06a9\u0646\u06cc\u062f.<\/p>\n<h3><span class=\"ez-toc-section\" id=\"%D8%B3%D9%81%D8%A7%D8%B1%D8%B4%DB%8C_%D8%B3%D8%A7%D8%B2%DB%8C_%D9%88_%D8%AF%D8%B3%D8%AA%D8%B1%D8%B3%DB%8C\"><\/span>\n<p>  \u0633\u0641\u0627\u0631\u0634\u06cc \u0633\u0627\u0632\u06cc \u0648 \u062f\u0633\u062a\u0631\u0633\u06cc<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>\u06cc\u06a9 \u062c\u0646\u0628\u0647 \u062c\u0627\u0644\u0628 \u0627\u0632 <code>egui<\/code> \u0622\u0646 \u0627\u0633\u062a <code>egui<\/code> \u062f\u0631 \u0648\u0627\u0642\u0639 \u0641\u0642\u0637 \u06cc\u06a9 \u06a9\u062a\u0627\u0628\u062e\u0627\u0646\u0647 \u0628\u0631\u0627\u06cc \u0633\u0627\u062e\u062a \u06cc\u06a9 \u0631\u0627\u0628\u0637 \u06a9\u0627\u0631\u0628\u0631\u06cc \u06af\u0631\u0627\u0641\u06cc\u06a9\u06cc \u0627\u0633\u062a\u060c \u0646\u0647 \u06cc\u06a9 \u0686\u0627\u0631\u0686\u0648\u0628. \u0627\u0645\u0627 \u0686\u0627\u0631\u0686\u0648\u0628\u06cc \u0647\u0645 \u0628\u0647 \u0646\u0627\u0645 \u0648\u062c\u0648\u062f \u062f\u0627\u0631\u062f <code>eframe<\/code>\u060c \u06a9\u0647 \u0645\u062d\u06cc\u0637 \u0627\u0637\u0631\u0627\u0641 \u0631\u0627 \u0628\u0631\u0627\u06cc \u0633\u0627\u062e\u062a \u06cc\u06a9 \u0628\u0631\u0646\u0627\u0645\u0647 \u0648\u0627\u0642\u0639\u06cc \u0627\u0636\u0627\u0641\u0647 \u0645\u06cc \u06a9\u0646\u062f. <\/p>\n<p>\u06a9\u062a\u0627\u0628\u062e\u0627\u0646\u0647\u060c <code>egui<\/code> \u0631\u0627 \u0645\u06cc \u062a\u0648\u0627\u0646 \u062f\u0631 \u0686\u0627\u0631\u0686\u0648\u0628 \u0647\u0627\u06cc \u0645\u062e\u062a\u0644\u0641\u060c \u0645\u0627\u0646\u0646\u062f \u0645\u0648\u062a\u0648\u0631\u0647\u0627\u06cc \u0628\u0627\u0632\u06cc\u060c \u0627\u062f\u063a\u0627\u0645 \u06a9\u0631\u062f\u060c \u06a9\u0647 \u0642\u0627\u0628\u0644\u06cc\u062a \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u062c\u062f\u062f \u0648 \u0645\u0627\u0698\u0648\u0644\u0627\u0631 \u0628\u0648\u062f\u0646 \u062e\u0648\u0628\u06cc \u0631\u0627 \u0627\u06cc\u062c\u0627\u062f \u0645\u06cc \u06a9\u0646\u062f. <\/p>\n<p>\u06cc\u06a9\u06cc \u0627\u0632 \u062c\u0646\u0628\u0647 \u0647\u0627\u06cc \u0645\u0647\u0645 \u0647\u0631 \u06a9\u062a\u0627\u0628\u062e\u0627\u0646\u0647 \u06cc\u0627 \u0686\u0627\u0631\u0686\u0648\u0628 \u0631\u0627\u0628\u0637 \u06a9\u0627\u0631\u0628\u0631\u06cc \u06af\u0631\u0627\u0641\u06cc\u06a9\u06cc\u060c \u0627\u0645\u06a9\u0627\u0646 \u0633\u0641\u0627\u0631\u0634\u06cc \u0633\u0627\u0632\u06cc \u0627\u0633\u062a <code>egui<\/code> \u0634\u0645\u0627 \u0631\u0627 \u062f\u0631 \u0622\u0646\u062c\u0627 \u062a\u062d\u062a \u067e\u0648\u0634\u0634 \u0642\u0631\u0627\u0631 \u062f\u0627\u062f\u0647 \u0627\u0633\u062a. <\/p>\n<p>\u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u06cc\u062f \u062f\u0631 \u0635\u0641\u062d\u0647 \u0646\u0645\u0627\u06cc\u0634\u06cc \u0641\u0648\u0642\u200c\u0627\u0644\u0639\u0627\u062f\u0647 \u0622\u0646\u200c\u0647\u0627 \u0645\u0634\u0627\u0647\u062f\u0647 \u06a9\u0646\u06cc\u062f\u060c \u06a9\u0647 \u0646\u0647 \u062a\u0646\u0647\u0627 \u062a\u0645\u0627\u0645 \u0648\u06cc\u062c\u062a\u200c\u0647\u0627\u06cc \u0645\u0648\u062c\u0648\u062f \u0648 \u0628\u0631\u062e\u06cc \u0627\u0632 \u0628\u0631\u0646\u0627\u0645\u0647\u200c\u0647\u0627\u06cc \u0646\u0645\u0627\u06cc\u0634\u06cc \u0639\u0627\u0644\u06cc \u0631\u0627 \u0646\u0634\u0627\u0646 \u0645\u06cc\u200c\u062f\u0647\u062f\u060c \u0628\u0644\u06a9\u0647 \u0627\u0628\u0632\u0627\u0631\u0647\u0627\u06cc \u0627\u0634\u06a9\u0627\u0644 \u0632\u062f\u0627\u06cc\u06cc \u0648 \u06af\u0632\u06cc\u0646\u0647\u200c\u0647\u0627\u06cc \u0633\u0641\u0627\u0631\u0634\u06cc\u200c\u0633\u0627\u0632\u06cc \u0631\u0627 \u0646\u06cc\u0632 \u0646\u0634\u0627\u0646 \u0645\u06cc\u200c\u062f\u0647\u062f\u060c \u0628\u0646\u0627\u0628\u0631\u0627\u06cc\u0646 \u0642\u0628\u0644 \u0627\u0632 \u063a\u0648\u0627\u0635\u06cc \u0639\u0645\u06cc\u0642\u200c\u062a\u0631 \u0628\u0627 \u0622\u0646 \u0628\u0627\u0632\u06cc \u06a9\u0646\u06cc\u062f. <\/p>\n<p>Egui \u0647\u0645\u0686\u0646\u06cc\u0646 \u062f\u0627\u0631\u0627\u06cc \u0627\u0633\u0646\u0627\u062f \u0639\u0627\u0644\u06cc \u0648 \u0646\u0645\u0648\u0646\u0647 \u0647\u0627\u06cc \u0628\u0633\u06cc\u0627\u0631 \u0632\u06cc\u0627\u062f\u06cc \u0627\u0633\u062a \u06a9\u0647 \u0628\u0631\u0627\u06cc \u0622\u0645\u0648\u0632\u0634 \u0648 \u0646\u0634\u0627\u0646 \u062f\u0627\u062f\u0646 \u0642\u0627\u0628\u0644\u06cc\u062a \u0647\u0627\u06cc \u06a9\u062a\u0627\u0628\u062e\u0627\u0646\u0647 \u0633\u0627\u062e\u062a\u0647 \u0634\u062f\u0647 \u0627\u0646\u062f: <img alt=\"\u062a\u0635\u0648\u06cc\u0631 \u0635\u0641\u062d\u0647 \u0646\u0645\u0627\u06cc\u0634 \u062a\u0646\u0638\u06cc\u0645\u0627\u062a \u0648 \u06af\u0627\u0644\u0631\u06cc \u0648\u06cc\u062c\u062a \u062f\u0631 \u06cc\u06a9 \u0628\u0631\u0646\u0627\u0645\u0647 \u0631\u0627\u0628\u0637 \u06a9\u0627\u0631\u0628\u0631\u06cc \u06af\u0631\u0627\u0641\u06cc\u06a9\u06cc \u0645\u0628\u062a\u0646\u06cc \u0628\u0631 egui. \u0627\u06cc\u0646 \u062a\u0635\u0648\u06cc\u0631 \u06af\u0632\u06cc\u0646\u0647\u200c\u0647\u0627\u06cc \u0633\u0641\u0627\u0631\u0634\u06cc\u200c\u0633\u0627\u0632\u06cc \u0645\u062e\u062a\u0644\u0641 \u0645\u0627\u0646\u0646\u062f srcs \u0645\u062a\u0646\u060c \u0641\u0627\u0635\u0644\u0647\u060c \u062a\u0646\u0638\u06cc\u0645\u0627\u062a \u062a\u0639\u0627\u0645\u0644 \u0648 \u0627\u062c\u0632\u0627\u06cc \u0648\u06cc\u062c\u062a \u0645\u0627\u0646\u0646\u062f \u062f\u06a9\u0645\u0647\u200c\u0647\u0627\u060c \u0644\u063a\u0632\u0646\u062f\u0647 \u0648 \u0646\u0648\u0627\u0631\u0647\u0627\u06cc \u067e\u06cc\u0634\u0631\u0641\u062a \u0631\u0627 \u0646\u0634\u0627\u0646 \u0645\u06cc\u200c\u062f\u0647\u062f. \u0627\u06cc\u0646 \u0628\u0635\u0631\u06cc \u0627\u0646\u0639\u0637\u0627\u0641\u200c\u067e\u0630\u06cc\u0631\u06cc \u0648 \u0633\u0647\u0648\u0644\u062a \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 egui \u0631\u0627 \u062f\u0631 \u0633\u0627\u062e\u062a \u0628\u0631\u0646\u0627\u0645\u0647\u200c\u0647\u0627\u06cc \u0631\u0627\u0628\u0637 \u06a9\u0627\u0631\u0628\u0631\u06cc \u06af\u0631\u0627\u0641\u06cc\u06a9\u06cc \u0645\u062a\u0642\u0627\u0628\u0644 \u067e\u0644\u062a\u0641\u0631\u0645 \u062f\u0631 Rust \u0628\u0631\u062c\u0633\u062a\u0647 \u0645\u06cc\u200c\u06a9\u0646\u062f \u0648 \u0648\u06cc\u0698\u06af\u06cc\u200c\u0647\u0627\u06cc Backend \u0648 Frontend \u0686\u0627\u0631\u0686\u0648\u0628 \u0631\u0627 \u0628\u0647 \u0646\u0645\u0627\u06cc\u0634 \u0645\u06cc\u200c\u06af\u0630\u0627\u0631\u062f.\" loading=\"lazy\" width=\"800\" height=\"418\"\/>   \u06cc\u06a9\u06cc \u062f\u06cc\u06af\u0631 \u0627\u0632 \u062c\u0646\u0628\u0647\u200c\u0647\u0627\u06cc \u062c\u0627\u0644\u0628 egui \u0627\u06cc\u0646 \u0627\u0633\u062a \u06a9\u0647 AccessKit \u0631\u0627 \u06cc\u06a9\u067e\u0627\u0631\u0686\u0647 \u0645\u06cc\u200c\u06a9\u0646\u062f\u060c \u06cc\u06a9 \u0686\u0627\u0631\u0686\u0648\u0628 \u0628\u06cc\u0646 \u067e\u0644\u062a\u0641\u0631\u0645\u06cc \u0628\u0631\u0627\u06cc \u062f\u0633\u062a\u0631\u0633\u06cc. <\/p>\n<p>\u0627\u06af\u0631\u0686\u0647 AccessKit\u060c \u062f\u0631 \u0632\u0645\u0627\u0646 \u0646\u06af\u0627\u0631\u0634\u060c \u067e\u06cc\u0627\u062f\u0647\u200c\u0633\u0627\u0632\u06cc \u06a9\u0627\u0645\u0644\u06cc \u0628\u0631\u0627\u06cc \u0648\u0628 \u0646\u062f\u0627\u0631\u062f\u060c \u0628\u0647 \u0646\u0638\u0631 \u0645\u06cc\u200c\u0631\u0633\u062f \u06cc\u06a9 \u067e\u0631\u0648\u0698\u0647 \u0628\u0633\u06cc\u0627\u0631 \u0627\u0645\u06cc\u062f\u0648\u0627\u0631\u06a9\u0646\u0646\u062f\u0647 \u0628\u0631\u0627\u06cc \u0622\u0633\u0627\u0646\u200c\u062a\u0631 \u06a9\u0631\u062f\u0646 \u067e\u06cc\u0627\u062f\u0647\u200c\u0633\u0627\u0632\u06cc \u0648\u06cc\u0698\u06af\u06cc\u200c\u0647\u0627\u06cc \u062f\u0633\u062a\u0631\u0633\u06cc \u0628\u0631\u0627\u06cc \u0647\u0631 \u067e\u0644\u062a\u0641\u0631\u0645 \u0628\u0627\u0634\u062f.<\/p>\n<h3><span class=\"ez-toc-section\" id=\"%DA%A9%D8%B1%D8%A7%D8%B3_%D9%BE%D9%84%D8%AA%D9%81%D8%B1%D9%85_%D9%88_%D9%88%D8%A8\"><\/span>\n<p>  \u06a9\u0631\u0627\u0633 \u067e\u0644\u062a\u0641\u0631\u0645 \u0648 \u0648\u0628<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>\u0647\u0645\u0627\u0646\u0637\u0648\u0631 \u06a9\u0647 \u062f\u0631 \u0627\u0628\u062a\u062f\u0627 \u0630\u06a9\u0631 \u0634\u062f\u060c \u0647\u062f\u0641 \u0627\u0632 <code>egui<\/code> \u0627\u06cc\u0646 \u0627\u0633\u062a \u06a9\u0647 \u06cc\u06a9 \u06a9\u062a\u0627\u0628\u062e\u0627\u0646\u0647 \u0628\u0631\u0646\u0627\u0645\u0647 \u0631\u0627\u0628\u0637 \u06a9\u0627\u0631\u0628\u0631\u06cc \u06af\u0631\u0627\u0641\u06cc\u06a9\u06cc \u0628\u06cc\u0646 \u067e\u0644\u062a\u0641\u0631\u0645\u06cc \u0628\u0627\u0634\u062f. \u0628\u0627 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 eframe_template\u060c \u0645\u06cc \u062a\u0648\u0627\u0646 \u0628\u0631\u0646\u0627\u0645\u0647 \u0647\u0627\u06cc\u06cc \u0628\u0631\u0627\u06cc \u0644\u06cc\u0646\u0648\u06a9\u0633\u060c \u0645\u06a9\u060c \u0648\u06cc\u0646\u062f\u0648\u0632\u060c \u0627\u0646\u062f\u0631\u0648\u06cc\u062f \u0648 \u0648\u0628 \u0628\u0627 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 WebGL\/WebGPU \u0648 WASM \u0633\u0627\u062e\u062a. <\/p>\n<p>\u067e\u0634\u062a\u06cc\u0628\u0627\u0646\u06cc \u0627\u0632 \u067e\u0644\u062a\u0641\u0631\u0645 \u0647\u0627\u06cc \u0645\u062e\u062a\u0644\u0641 \u0647\u0646\u0648\u0632 \u062f\u0631 \u0645\u0631\u062d\u0644\u0647 \u0628\u0644\u0648\u063a \u0627\u0633\u062a\u060c \u0627\u0645\u0627 \u0628\u0631\u0627\u06cc \u062f\u0633\u06a9\u062a\u0627\u067e \u0627\u0632 \u0642\u0628\u0644 \u0628\u0647 \u0637\u0648\u0631 \u067e\u0627\u06cc\u062f\u0627\u0631 \u06a9\u0627\u0631 \u0645\u06cc \u06a9\u0646\u062f. \u0628\u0627 \u062a\u0648\u062c\u0647 \u0628\u0647 \u0631\u0648\u06cc\u06a9\u0631\u062f\u06cc \u06a9\u0647 \u0628\u0647 \u0648\u0628 \u0645\u06cc\u200c\u0631\u0633\u062f\u060c \u0645\u062d\u062f\u0648\u062f\u06cc\u062a\u200c\u0647\u0627\u06cc\u06cc \u0648\u062c\u0648\u062f \u062f\u0627\u0631\u062f\u060c \u0628\u0646\u0627\u0628\u0631\u0627\u06cc\u0646 egui \u0645\u0637\u0645\u0626\u0646\u0627\u064b \u062c\u0627\u06cc\u06af\u0632\u06cc\u0646\u06cc \u0628\u0631\u0627\u06cc \u0633\u0627\u062e\u062a \u0647\u06cc\u0686 \u0648 \u0647\u0645\u0647 \u0628\u0631\u0646\u0627\u0645\u0647\u200c\u0647\u0627\u06cc \u06a9\u0627\u0631\u0628\u0631\u062f\u06cc \u0648\u0628 \u0646\u06cc\u0633\u062a\u060c \u0627\u0645\u0627 \u0633\u0639\u06cc \u0646\u0645\u06cc\u200c\u06a9\u0646\u062f \u062e\u0648\u062f \u0631\u0627 \u0628\u0647 \u0627\u06cc\u0646 \u0634\u06a9\u0644 \u0628\u0627\u0634\u062f \u06cc\u0627 \u062a\u0628\u0644\u06cc\u063a \u06a9\u0646\u062f. <\/p>\n<p>\u0628\u0627 \u0627\u06cc\u0646 \u062d\u0627\u0644\u060c \u0648\u0642\u062a\u06cc \u0628\u0647 \u0628\u0631\u0646\u0627\u0645\u0647\u200c\u0647\u0627\u06cc \u0622\u0632\u0645\u0627\u06cc\u0634\u06cc \u062f\u0631 \u0635\u0641\u062d\u0647 \u0646\u0645\u0627\u06cc\u0634\u06cc \u0646\u06af\u0627\u0647 \u0645\u06cc\u200c\u06a9\u0646\u06cc\u062f\u060c \u06a9\u0627\u0645\u0644\u0627\u064b \u0686\u0634\u0645\u06af\u06cc\u0631 \u0627\u0633\u062a \u06a9\u0647 \u0627\u0632 \u0642\u0628\u0644 \u0628\u0627 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 egui \u062d\u062a\u06cc \u062f\u0631 \u0645\u062d\u062f\u0648\u062f\u062a\u0631\u06cc\u0646 \u0645\u062d\u06cc\u0637 \u0622\u0646 \u0645\u0645\u06a9\u0646 \u0627\u0633\u062a. <\/p>\n<p>\u062f\u0631 \u0645\u062b\u0627\u0644\u06cc \u06a9\u0647 \u062f\u0631 \u0627\u06cc\u0646 \u0645\u0642\u0627\u0644\u0647 \u0622\u0645\u062f\u0647 \u0627\u0633\u062a\u060c \u0645\u0627 \u06cc\u06a9 \u0628\u0631\u0646\u0627\u0645\u0647 \u062f\u0633\u06a9\u062a\u0627\u067e \u0627\u0648\u0644 \u0645\u06cc \u0633\u0627\u0632\u06cc\u0645 \u06a9\u0647 \u0646\u0645\u06cc \u062a\u0648\u0627\u0646\u06cc\u0645 \u0622\u0646 \u0631\u0627 \u062f\u0631 WASM \u06a9\u0627\u0645\u067e\u0627\u06cc\u0644 \u06a9\u0646\u06cc\u0645 \u0632\u06cc\u0631\u0627 \u0627\u0632 sqlite \u0628\u0647 \u0639\u0646\u0648\u0627\u0646 \u0630\u062e\u06cc\u0631\u0647 \u0633\u0627\u0632\u06cc \u062f\u0627\u062f\u0647 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc \u06a9\u0646\u06cc\u0645. <\/p>\n<p>\u0628\u0627 \u0627\u06cc\u0646 \u062d\u0627\u0644\u060c \u0628\u0627 \u0686\u0646\u062f \u062a\u063a\u06cc\u06cc\u0631 \u0648\u0627\u0628\u0633\u062a\u0647 \u0628\u0647 \u067e\u0644\u062a \u0641\u0631\u0645 \u0648 <code>eframe_template<\/code>\u060c \u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u06cc\u0645 \u062f\u0631 \u0647\u0646\u06af\u0627\u0645 \u0633\u0627\u062e\u062a\u0646 \u0628\u0631\u0627\u06cc WASM \u0627\u0632 \u0630\u062e\u06cc\u0631\u0647\u200c\u0633\u0627\u0632\u06cc \u062f\u0627\u062f\u0647\u200c\u0647\u0627\u06cc \u0645\u062a\u0641\u0627\u0648\u062a\u06cc \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0646\u06cc\u0645\u060c \u0648 \u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u06cc\u0645 \u0622\u0646 \u0631\u0627 \u0628\u0631\u0627\u06cc \u0648\u0628 \u0646\u06cc\u0632 \u06a9\u0627\u0631 \u06a9\u0646\u06cc\u0645\u060c \u0627\u0645\u0627 \u0627\u06cc\u0646 \u0645\u0648\u0636\u0648\u0639 \u062e\u0627\u0631\u062c \u0627\u0632 \u0645\u062d\u062f\u0648\u062f\u0647 \u0627\u06cc\u0646 \u067e\u0633\u062a \u0627\u0633\u062a. <\/p>\n<p>\u0628\u06cc\u0627\u06cc\u06cc\u062f \u0634\u0631\u0648\u0639 \u0628\u0647 \u0633\u0627\u062e\u062a \u0628\u0631\u0646\u0627\u0645\u0647 \u062e\u0648\u062f \u06a9\u0646\u06cc\u0645!<\/p>\n<h2><span class=\"ez-toc-section\" id=\"%D8%B1%D8%A7%D9%87_%D8%A7%D9%86%D8%AF%D8%A7%D8%B2%DB%8C\"><\/span>\n<p>  \u0631\u0627\u0647 \u0627\u0646\u062f\u0627\u0632\u06cc<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>\u0628\u0631\u0627\u06cc \u0627\u062f\u0627\u0645\u0647\u060c \u062a\u0646\u0647\u0627 \u0686\u06cc\u0632\u06cc \u06a9\u0647 \u0646\u06cc\u0627\u0632 \u062f\u0627\u0631\u06cc\u062f\u060c \u0646\u0635\u0628 \u0627\u062e\u06cc\u0631 Rust \u0627\u0633\u062a \u06a9\u0647 1.79 \u0622\u062e\u0631\u06cc\u0646 \u0645\u0648\u0631\u062f \u062f\u0631 \u0632\u0645\u0627\u0646 \u0646\u06af\u0627\u0631\u0634 \u0627\u06cc\u0646 \u0645\u0642\u0627\u0644\u0647 \u0627\u0633\u062a. <\/p>\n<p>\u0627\u0628\u062a\u062f\u0627 \u06cc\u06a9 \u067e\u0631\u0648\u0698\u0647 Rust \u062c\u062f\u06cc\u062f \u0627\u06cc\u062c\u0627\u062f \u06a9\u0646\u06cc\u062f:<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight shell\"><code>cargo new rust-egui-example\n<span class=\"nb\">cd <\/span>rust-egui-example\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<p>\u062f\u0631 \u0645\u0631\u062d\u0644\u0647 \u0628\u0639\u062f\u060c \u0641\u0627\u06cc\u0644 Cargo.toml \u0631\u0627 \u0648\u06cc\u0631\u0627\u06cc\u0634 \u06a9\u0646\u06cc\u062f \u0648 \u0648\u0627\u0628\u0633\u062a\u06af\u06cc \u0647\u0627\u06cc \u0645\u0648\u0631\u062f \u0646\u06cc\u0627\u0632 \u062e\u0648\u062f \u0631\u0627 \u0627\u0636\u0627\u0641\u0647 \u06a9\u0646\u06cc\u062f:<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight toml\"><code><span class=\"nn\">[dependencies]<\/span>\n<span class=\"py\">sqlite<\/span> <span class=\"p\">=<\/span> <span class=\"s\">\"0.36.0\"<\/span>\n<span class=\"py\">anyhow<\/span> <span class=\"p\">=<\/span> <span class=\"s\">\"1.0.82\"<\/span>\n<span class=\"py\">eframe<\/span> <span class=\"o\">=<\/span> <span class=\"p\">{<\/span> <span class=\"py\">version<\/span> <span class=\"p\">=<\/span> <span class=\"s\">\"0.28.0\"<\/span><span class=\"p\">,<\/span> <span class=\"py\">features<\/span> <span class=\"p\">=<\/span> <span class=\"p\">[<\/span><span class=\"s\">\"wgpu\"<\/span><span class=\"p\">]<\/span> <span class=\"p\">}<\/span>\n<span class=\"py\">env_logger<\/span> <span class=\"p\">=<\/span> <span class=\"s\">\"0.11.3\"<\/span>\n<span class=\"py\">log<\/span> <span class=\"p\">=<\/span> <span class=\"s\">\"0.4.21\"<\/span>\n<span class=\"py\">ehttp<\/span> <span class=\"o\">=<\/span> <span class=\"p\">{<\/span> <span class=\"py\">version<\/span> <span class=\"p\">=<\/span> <span class=\"s\">\"0.5.0\"<\/span><span class=\"p\">,<\/span> <span class=\"py\">features<\/span> <span class=\"p\">=<\/span> <span class=\"p\">[<\/span><span class=\"s\">\"json\"<\/span><span class=\"p\">]<\/span> <span class=\"p\">}<\/span>\n<span class=\"py\">serde<\/span> <span class=\"o\">=<\/span> <span class=\"p\">{<\/span> <span class=\"py\">version<\/span> <span class=\"p\">=<\/span> <span class=\"s\">\"1.0.203\"<\/span><span class=\"p\">,<\/span> <span class=\"py\">features<\/span> <span class=\"p\">=<\/span> <span class=\"p\">[<\/span><span class=\"s\">\"derive\"<\/span><span class=\"p\">]<\/span> <span class=\"p\">}<\/span>\n<span class=\"py\">egui_extras<\/span> <span class=\"o\">=<\/span> <span class=\"p\">{<\/span> <span class=\"py\">version<\/span> <span class=\"p\">=<\/span> <span class=\"s\">\"0.28.0\"<\/span><span class=\"p\">,<\/span> <span class=\"py\">features<\/span> <span class=\"p\">=<\/span> <span class=\"p\">[<\/span><span class=\"s\">\"all_loaders\"<\/span><span class=\"p\">]<\/span> <span class=\"p\">}<\/span>\n<span class=\"py\">image<\/span> <span class=\"o\">=<\/span> <span class=\"p\">{<\/span> <span class=\"py\">version<\/span> <span class=\"p\">=<\/span> <span class=\"s\">\"0.25\"<\/span><span class=\"p\">,<\/span> <span class=\"py\">features<\/span> <span class=\"p\">=<\/span> <span class=\"p\">[<\/span><span class=\"s\">\"jpeg\"<\/span><span class=\"p\">,<\/span> <span class=\"s\">\"png\"<\/span><span class=\"p\">]<\/span> <span class=\"p\">}<\/span>\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<p>\u0631\u0627 \u0627\u0636\u0627\u0641\u0647 \u0645\u06cc \u06a9\u0646\u06cc\u0645 <code>egui<\/code> \u0648 <code>eframe<\/code> \u0648\u0627\u0628\u0633\u062a\u06af\u06cc \u0647\u0627 \u0648 \u0647\u0645\u0686\u0646\u06cc\u0646 <code>egui_extras<\/code>\u060c \u06a9\u0647 \u0628\u0647 \u0645\u0627 \u0627\u0645\u06a9\u0627\u0646 \u0645\u06cc \u062f\u0647\u062f \u0627\u0632 \u0639\u0645\u0644\u06a9\u0631\u062f \u0628\u0627\u0631\u06af\u0630\u0627\u0631\u06cc \u062a\u0635\u0648\u06cc\u0631 \u0647\u0645\u0631\u0627\u0647 \u0628\u0627 <code>image<\/code> \u062c\u0639\u0628\u0647 <\/p>\n<p>\u0645\u0627 \u0647\u0645 \u0627\u0636\u0627\u0641\u0647 \u0645\u06cc \u06a9\u0646\u06cc\u0645 <code>ehttp<\/code> \u0628\u0631\u0627\u06cc \u0648\u0627\u06a9\u0634\u06cc \u062a\u0635\u0627\u0648\u06cc\u0631 \u062d\u06cc\u0648\u0627\u0646\u0627\u062a \u062a\u0635\u0627\u062f\u0641\u06cc \u0648 <code>serde<\/code> \u0628\u0631\u0627\u06cc \u0633\u0631\u06cc\u0627\u0644 \u0633\u0627\u0632\u06cc \u0648 \u0633\u0631\u06cc\u0627\u0644 \u0632\u062f\u0627\u06cc\u06cc \u0639\u0644\u0627\u0648\u0647 \u0628\u0631 \u0627\u06cc\u0646\u060c \u0645\u0627 \u0646\u06cc\u0627\u0632 \u062f\u0627\u0631\u06cc\u0645 <code>sqlite<\/code> \u0628\u0631\u0627\u06cc \u0630\u062e\u06cc\u0631\u0647 \u0633\u0627\u0632\u06cc \u062f\u0627\u062f\u0647 \u0647\u0627\u06cc \u0645\u0627\u060c \u0648 \u0645\u0627 \u0627\u0636\u0627\u0641\u0647 \u0645\u06cc \u06a9\u0646\u06cc\u0645 <code>anyhow<\/code> \u0628\u0631\u0627\u06cc \u0631\u0633\u06cc\u062f\u06af\u06cc \u0622\u0633\u0627\u0646 \u062a\u0631 \u062e\u0637\u0627 \u0648 <code>env_logger<\/code> \u0648 <code>log<\/code> \u0628\u0631\u0627\u06cc \u0642\u0627\u0628\u0644\u06cc\u062a \u0647\u0627\u06cc \u0648\u0631\u0648\u062f \u0628\u0647 \u0633\u06cc\u0633\u062a\u0645 <\/p>\n<p>\u0648 \u0628\u0627 \u0622\u0646\u060c \u0645\u0627 \u0645\u06cc \u062a\u0648\u0627\u0646\u06cc\u0645 \u0634\u0631\u0648\u0639 \u0628\u0647 \u0633\u0627\u062e\u062a \u0628\u0631\u0646\u0627\u0645\u0647 \u062e\u0648\u062f \u06a9\u0646\u06cc\u0645!<\/p>\n<h2><span class=\"ez-toc-section\" id=\"%D9%85%D8%AF%D9%84_%D8%AF%D8%A7%D8%AF%D9%87\"><\/span>\n<p>  \u0645\u062f\u0644 \u062f\u0627\u062f\u0647<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>\u0627\u0628\u062a\u062f\u0627 \u0645\u062f\u0644 \u062f\u0627\u062f\u0647 \u0647\u0627\u06cc \u0627\u0633\u0627\u0633\u06cc \u062e\u0648\u062f \u0631\u0627 \u062a\u0639\u0631\u06cc\u0641 \u0645\u06cc \u06a9\u0646\u06cc\u0645. \u0645\u0627 \u062f\u0631 \u062d\u0627\u0644 \u0633\u0627\u062e\u062a \u06cc\u06a9 \u0628\u0631\u0646\u0627\u0645\u0647 \u0645\u062f\u06cc\u0631\u06cc\u062a \u062d\u06cc\u0648\u0627\u0646\u0627\u062a \u062e\u0627\u0646\u06af\u06cc \u0647\u0633\u062a\u06cc\u0645\u060c \u0628\u0646\u0627\u0628\u0631\u0627\u06cc\u0646 \u0628\u0647 \u06cc\u06a9 \u0628\u0631\u0646\u0627\u0645\u0647 \u0646\u06cc\u0627\u0632 \u062f\u0627\u0631\u06cc\u0645 <code>Pet<\/code> \u0646\u0648\u0639 \u0645\u0627 \u0647\u0645 \u062a\u0635\u0645\u06cc\u0645 \u06af\u0631\u0641\u062a\u06cc\u0645 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0646\u06cc\u0645 <code>sqlite<\/code> \u0628\u0631\u0627\u06cc \u0630\u062e\u06cc\u0631\u0647 \u0633\u0627\u0632\u06cc \u062f\u0627\u062f\u0647\u060c \u0628\u0646\u0627\u0628\u0631\u0627\u06cc\u0646 \u0628\u0631\u0627\u06cc \u06a9\u0627\u0631 \u0628\u0627 \u0645\u062f\u0644 \u062f\u0627\u062f\u0647 \u062e\u0648\u062f \u0628\u0627 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 SQL \u0628\u0647 \u062a\u0646\u0638\u06cc\u0645\u0627\u062a\u06cc \u0646\u06cc\u0627\u0632 \u062f\u0627\u0631\u06cc\u0645:<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight rust\"><code><span class=\"nd\">#[derive(Debug,<\/span> <span class=\"nd\">PartialEq,<\/span> <span class=\"nd\">Clone)]<\/span>\n<span class=\"k\">struct<\/span> <span class=\"nf\">PetKind<\/span><span class=\"p\">(<\/span><span class=\"nb\">String<\/span><span class=\"p\">);<\/span>\n\n<span class=\"nd\">#[derive(Debug,<\/span> <span class=\"nd\">PartialEq,<\/span> <span class=\"nd\">Clone)]<\/span>\n<span class=\"k\">struct<\/span> <span class=\"n\">Pet<\/span> <span class=\"p\">{<\/span>\n    <span class=\"n\">id<\/span><span class=\"p\">:<\/span> <span class=\"nb\">i64<\/span><span class=\"p\">,<\/span>\n    <span class=\"n\">name<\/span><span class=\"p\">:<\/span> <span class=\"nb\">String<\/span><span class=\"p\">,<\/span>\n    <span class=\"n\">age<\/span><span class=\"p\">:<\/span> <span class=\"nb\">i64<\/span><span class=\"p\">,<\/span>\n    <span class=\"n\">kind<\/span><span class=\"p\">:<\/span> <span class=\"n\">PetKind<\/span><span class=\"p\">,<\/span>\n<span class=\"p\">}<\/span>\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<p>\u0627\u06cc\u0646 <code>Pet<\/code> \u0646\u0648\u0639 \u0628\u0633\u06cc\u0627\u0631 \u0633\u0627\u062f\u0647 \u0627\u0633\u062a \u0648 \u0634\u0627\u0645\u0644 \u06cc\u06a9 <code>id<\/code>\u060c <code>name<\/code>\u060c <code>age<\/code> \u0648 <code>kind<\/code>. \u0627\u0644\u0628\u062a\u0647\u060c \u0645\u0627 \u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u06cc\u0645 \u0628\u0633\u06cc\u0627\u0631\u06cc \u0627\u0632 \u0648\u06cc\u0698\u06af\u06cc\u200c\u0647\u0627\u06cc \u062c\u0627\u0644\u0628\u200c\u062a\u0631 \u0631\u0627 \u0627\u0636\u0627\u0641\u0647 \u06a9\u0646\u06cc\u0645\u060c \u0627\u0645\u0627 \u0622\u0646 \u0631\u0627 \u0633\u0627\u062f\u0647 \u0646\u06af\u0647 \u0645\u06cc\u200c\u062f\u0627\u0631\u06cc\u0645. <\/p>\n<p>\u0645\u0631\u062d\u0644\u0647 \u0628\u0639\u062f\u06cc \u0627\u06cc\u062c\u0627\u062f \u062c\u062f\u0648\u0644 \u062f\u0631 \u0645\u0627 \u0627\u0633\u062a <code>sqlite<\/code> \u067e\u0627\u06cc\u06af\u0627\u0647 \u062f\u0627\u062f\u0647:<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight sql\"><code><span class=\"k\">CREATE<\/span> <span class=\"k\">TABLE<\/span> <span class=\"n\">IF<\/span> <span class=\"k\">NOT<\/span> <span class=\"k\">EXISTS<\/span> <span class=\"n\">pets<\/span> <span class=\"p\">(<\/span>\n    <span class=\"n\">id<\/span> <span class=\"nb\">INTEGER<\/span> <span class=\"k\">PRIMARY<\/span> <span class=\"k\">KEY<\/span><span class=\"p\">,<\/span>\n    <span class=\"n\">name<\/span> <span class=\"nb\">TEXT<\/span> <span class=\"k\">NOT<\/span> <span class=\"k\">NULL<\/span><span class=\"p\">,<\/span>\n    <span class=\"n\">age<\/span> <span class=\"nb\">INTEGER<\/span> <span class=\"k\">NOT<\/span> <span class=\"k\">NULL<\/span><span class=\"p\">,<\/span>\n    <span class=\"n\">kind<\/span> <span class=\"nb\">TEXT<\/span> <span class=\"k\">NOT<\/span> <span class=\"k\">NULL<\/span>\n<span class=\"p\">);<\/span>\n\n<span class=\"k\">INSERT<\/span> <span class=\"k\">INTO<\/span> <span class=\"n\">pets<\/span> <span class=\"p\">(<\/span><span class=\"n\">name<\/span><span class=\"p\">,<\/span> <span class=\"n\">age<\/span><span class=\"p\">,<\/span> <span class=\"n\">kind<\/span><span class=\"p\">)<\/span> <span class=\"k\">VALUES<\/span> <span class=\"p\">(<\/span><span class=\"s1\">'minka'<\/span><span class=\"p\">,<\/span> <span class=\"mi\">9<\/span><span class=\"p\">,<\/span> <span class=\"s1\">'cat'<\/span><span class=\"p\">);<\/span>\n<span class=\"k\">INSERT<\/span> <span class=\"k\">INTO<\/span> <span class=\"n\">pets<\/span> <span class=\"p\">(<\/span><span class=\"n\">name<\/span><span class=\"p\">,<\/span> <span class=\"n\">age<\/span><span class=\"p\">,<\/span> <span class=\"n\">kind<\/span><span class=\"p\">)<\/span> <span class=\"k\">VALUES<\/span> <span class=\"p\">(<\/span><span class=\"s1\">'nala'<\/span><span class=\"p\">,<\/span> <span class=\"mi\">7<\/span><span class=\"p\">,<\/span> <span class=\"s1\">'dog'<\/span><span class=\"p\">);<\/span>\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<p>\u0627\u06cc\u0646 \u0628\u0647 \u0633\u0627\u062f\u06af\u06cc \u0622\u06cc\u0646\u0647 \u0645\u0627\u0633\u062a <code>Pet<\/code> \u0646\u0648\u0639 \u0647\u0645\u0686\u0646\u06cc\u0646 \u0645\u06cc \u062a\u0648\u0627\u0646\u06cc\u0645 \u067e\u0631\u0633 \u0648 \u062c\u0648\u0647\u0627\u06cc\u06cc \u0631\u0627 \u06a9\u0647 \u0628\u0631\u0627\u06cc \u0639\u0645\u0644\u06cc\u0627\u062a \u0645\u0648\u0631\u062f \u0646\u06cc\u0627\u0632 \u062e\u0648\u062f \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u062e\u0648\u0627\u0647\u06cc\u0645 \u06a9\u0631\u062f\u060c \u062a\u0639\u0631\u06cc\u0641 \u06a9\u0646\u06cc\u0645.<\/p>\n<ul>\n<li>    \u06cc\u06a9 \u062d\u06cc\u0648\u0627\u0646 \u062e\u0627\u0646\u06af\u06cc \u0631\u0627 \u0627\u0632 \u067e\u0627\u06cc\u06af\u0627\u0647 \u062f\u0627\u062f\u0647 \u0628\u0627 \u0634\u0646\u0627\u0633\u0647 \u0622\u0646 \u0648\u0627\u06a9\u0634\u06cc \u06a9\u0646\u06cc\u062f<\/li>\n<li>    \u0647\u0645\u0647 \u062d\u06cc\u0648\u0627\u0646\u0627\u062a \u062e\u0627\u0646\u06af\u06cc \u0631\u0627 \u0627\u0632 \u067e\u0627\u06cc\u06af\u0627\u0647 \u062f\u0627\u062f\u0647 \u0648\u0627\u06a9\u0634\u06cc \u06a9\u0646\u06cc\u062f<\/li>\n<li>    \u06cc\u06a9 \u062d\u06cc\u0648\u0627\u0646 \u062e\u0627\u0646\u06af\u06cc \u0631\u0627 \u062f\u0631 \u067e\u0627\u06cc\u06af\u0627\u0647 \u062f\u0627\u062f\u0647 \u0642\u0631\u0627\u0631 \u062f\u0647\u06cc\u062f<\/li>\n<li>    \u06cc\u06a9 \u062d\u06cc\u0648\u0627\u0646 \u062e\u0627\u0646\u06af\u06cc \u0631\u0627 \u0627\u0632 \u067e\u0627\u06cc\u06af\u0627\u0647 \u062f\u0627\u062f\u0647 \u062d\u0630\u0641 \u06a9\u0646\u06cc\u062f\n<\/li>\n<\/ul>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight rust\"><code><span class=\"k\">const<\/span> <span class=\"n\">GET_PET_BY_ID<\/span><span class=\"p\">:<\/span> <span class=\"o\">&amp;<\/span><span class=\"nb\">str<\/span> <span class=\"o\">=<\/span> <span class=\"s\">\"SELECT id, name, age, kind FROM pets where id = ?\"<\/span><span class=\"p\">;<\/span>\n<span class=\"k\">const<\/span> <span class=\"n\">DELETE_PET_BY_ID<\/span><span class=\"p\">:<\/span> <span class=\"o\">&amp;<\/span><span class=\"nb\">str<\/span> <span class=\"o\">=<\/span> <span class=\"s\">\"DELETE FROM pets where id = ?\"<\/span><span class=\"p\">;<\/span>\n<span class=\"k\">const<\/span> <span class=\"n\">INSERT_PET<\/span><span class=\"p\">:<\/span> <span class=\"o\">&amp;<\/span><span class=\"nb\">str<\/span> <span class=\"o\">=<\/span>\n    <span class=\"s\">\"INSERT INTO pets (name, age, kind) VALUES (?, ?, ?) RETURNING id, name, age, kind\"<\/span><span class=\"p\">;<\/span>\n<span class=\"k\">const<\/span> <span class=\"n\">GET_PETS<\/span><span class=\"p\">:<\/span> <span class=\"o\">&amp;<\/span><span class=\"nb\">str<\/span> <span class=\"o\">=<\/span> <span class=\"s\">\"SELECT id, name, age, kind FROM pets\"<\/span><span class=\"p\">;<\/span>\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<p>\u0627\u06a9\u0646\u0648\u0646\u060c \u062a\u0646\u0647\u0627 \u06a9\u0627\u0631\u06cc \u06a9\u0647 \u0628\u0627\u06cc\u062f \u0627\u0646\u062c\u0627\u0645 \u062f\u0647\u06cc\u0645 \u0627\u06cc\u0646 \u0627\u0633\u062a \u06a9\u0647 \u06cc\u06a9 \u0627\u062a\u0635\u0627\u0644 \u0628\u0647 an \u0631\u0627\u0647 \u0627\u0646\u062f\u0627\u0632\u06cc \u06a9\u0646\u06cc\u0645 <code>sqlite<\/code> \u067e\u0627\u06cc\u06af\u0627\u0647 \u062f\u0627\u062f\u0647 \u062f\u0631 \u0628\u0631\u0646\u0627\u0645\u0647 \u0645\u0627 \u0648 \u067e\u0631\u0633 \u0648 \u062c\u0648 \u0631\u0627 \u062f\u0631 \u0627\u0633\u06a9\u0631\u06cc\u067e\u062a \u0627\u0648\u0644\u06cc\u0647 \u0645\u0627 \u062f\u0631 \u0628\u0627\u0644\u0627 \u0647\u0646\u06af\u0627\u0645 \u0631\u0627\u0647 \u0627\u0646\u062f\u0627\u0632\u06cc \u0627\u062c\u0631\u0627 \u06a9\u0646\u06cc\u062f. <\/p>\n<p>\u062f\u0631 \u0627\u06cc\u0646 \u0645\u0648\u0631\u062f\u060c \u0645\u0627 \u0627\u0632 \u06cc\u06a9 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc \u06a9\u0646\u06cc\u0645 <code>in-memory<\/code> \u0646\u0633\u062e\u0647 \u0627\u0632 <code>sqlite<\/code>\u060c \u06a9\u0647 \u062a\u0633\u062a \u0631\u0627 \u0622\u0633\u0627\u0646 \u062a\u0631 \u0645\u06cc \u06a9\u0646\u062f. \u0627\u06cc\u0646 \u0628\u062f\u0627\u0646 \u0645\u0639\u0646\u06cc \u0627\u0633\u062a \u06a9\u0647 \u0647\u0631 \u0628\u0627\u0631 \u06a9\u0647 \u0628\u0631\u0646\u0627\u0645\u0647 \u0634\u0631\u0648\u0639 \u0645\u06cc \u0634\u0648\u062f \u067e\u0627\u06cc\u06af\u0627\u0647 \u062f\u0627\u062f\u0647 \u0628\u0627\u0632\u0646\u0634\u0627\u0646\u06cc \u0645\u06cc \u0634\u0648\u062f\u060c \u06a9\u0647 \u0628\u0631\u0627\u06cc \u0622\u0632\u0645\u0627\u06cc\u0634 \u062e\u0648\u0628 \u0627\u0633\u062a\u060c \u0627\u0645\u0627 \u0627\u0644\u0628\u062a\u0647 \u0627\u06af\u0631 \u0628\u062e\u0648\u0627\u0647\u06cc\u0645 \u0646\u0633\u062e\u0647 \u062a\u0648\u0644\u06cc\u062f\u06cc \u0627\u06cc\u0646 \u0628\u0631\u0646\u0627\u0645\u0647 \u0631\u0627 \u0628\u0633\u0627\u0632\u06cc\u0645\u060c \u0628\u0627\u06cc\u062f \u062a\u063a\u06cc\u06cc\u0631 \u06a9\u0646\u062f:<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight rust\"><code><span class=\"k\">fn<\/span> <span class=\"nf\">load_init_sql<\/span><span class=\"p\">()<\/span> <span class=\"k\">-&gt;<\/span> <span class=\"nn\">std<\/span><span class=\"p\">::<\/span><span class=\"nn\">io<\/span><span class=\"p\">::<\/span><span class=\"nb\">Result<\/span> <span class=\"p\">{<\/span>\n    <span class=\"nn\">fs<\/span><span class=\"p\">::<\/span><span class=\"nf\">read_to_string<\/span><span class=\"p\">(<\/span><span class=\"s\">\".\/init.sql\"<\/span><span class=\"p\">)<\/span>\n<span class=\"p\">}<\/span>\n\n<span class=\"k\">fn<\/span> <span class=\"nf\">main<\/span><span class=\"p\">()<\/span> <span class=\"k\">-&gt;<\/span> <span class=\"nb\">Result<\/span><span class=\"o\"><span class=\"p\">()<\/span><span class=\"o\">&gt;<\/span> <span class=\"p\">{<\/span>\n    <span class=\"nn\">env_logger<\/span><span class=\"p\">::<\/span><span class=\"nf\">init<\/span><span class=\"p\">();<\/span>\n    <span class=\"o\">...<\/span>\n    <span class=\"k\">let<\/span> <span class=\"n\">init_query<\/span> <span class=\"o\">=<\/span> <span class=\"nf\">load_init_sql<\/span><span class=\"p\">()<\/span><span class=\"nf\">.expect<\/span><span class=\"p\">(<\/span><span class=\"s\">\"can load init query\"<\/span><span class=\"p\">);<\/span>\n    <span class=\"k\">let<\/span> <span class=\"n\">db_con<\/span> <span class=\"o\">=<\/span> <span class=\"nn\">sqlite<\/span><span class=\"p\">::<\/span><span class=\"nf\">open<\/span><span class=\"p\">(<\/span><span class=\"s\">\":memory:\"<\/span><span class=\"p\">)<\/span><span class=\"nf\">.expect<\/span><span class=\"p\">(<\/span><span class=\"s\">\"can create sqlite db\"<\/span><span class=\"p\">);<\/span>\n    <span class=\"n\">db_con<\/span>\n        <span class=\"nf\">.execute<\/span><span class=\"p\">(<\/span><span class=\"n\">init_query<\/span><span class=\"p\">)<\/span>\n        <span class=\"nf\">.expect<\/span><span class=\"p\">(<\/span><span class=\"s\">\"can initialize sqlite db\"<\/span><span class=\"p\">);<\/span>\n    <span class=\"o\">...<\/span>\n<span class=\"p\">}<\/span>\n<\/span><\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<p>\u0645\u0627 \u0627\u0633\u06a9\u0631\u06cc\u067e\u062a \u0627\u0648\u0644\u06cc\u0647 \u0633\u0627\u0632\u06cc \u067e\u0627\u06cc\u06af\u0627\u0647 \u062f\u0627\u062f\u0647 \u0631\u0627 \u0628\u0627\u0631\u06af\u0630\u0627\u0631\u06cc \u0645\u06cc \u06a9\u0646\u06cc\u0645\u060c \u06cc\u06a9 \u0627\u062a\u0635\u0627\u0644 \u0628\u0647 \u062d\u0627\u0641\u0638\u0647 \u0628\u0627\u0632 \u0645\u06cc \u06a9\u0646\u06cc\u0645 <code>sqlite<\/code> \u067e\u0627\u06cc\u06af\u0627\u0647 \u062f\u0627\u062f\u0647\u060c \u0648 \u0627\u0633\u06a9\u0631\u06cc\u067e\u062a \u0631\u0627 \u0627\u062c\u0631\u0627 \u06a9\u0646\u06cc\u062f\u060c \u067e\u0627\u06cc\u06af\u0627\u0647 \u062f\u0627\u062f\u0647 \u0645\u0627 \u0631\u0627 \u0645\u0642\u062f\u0627\u0631\u062f\u0647\u06cc \u0627\u0648\u0644\u06cc\u0647 \u06a9\u0646\u06cc\u062f. <\/p>\n<p>\u0633\u067e\u0633\u060c \u0627\u062c\u0627\u0632\u0647 \u062f\u0647\u06cc\u062f \u062a\u0648\u0627\u0628\u0639 \u06a9\u0645\u06a9\u06cc \u0631\u0627 \u0628\u0631\u0627\u06cc \u0639\u0645\u0644\u06cc\u0627\u062a \u0648\u0627\u06a9\u0634\u06cc \u0648 \u0630\u062e\u06cc\u0631\u0647 \u0633\u0627\u0632\u06cc \u062f\u0627\u062f\u0647 \u0647\u0627\u06cc \u0641\u0648\u0642 \u0627\u0644\u0630\u06a9\u0631 \u062a\u0639\u0631\u06cc\u0641 \u06a9\u0646\u06cc\u0645. \u0647\u0631 \u06cc\u06a9 \u0627\u0632 \u0622\u0646\u0647\u0627 \u0631\u0627 \u062e\u0648\u0627\u0647\u062f \u06af\u0631\u0641\u062a <code>db_con<\/code> \u0627\u0645\u0627 \u062f\u0631 \u062f\u0627\u062e\u0644 \u06cc\u06a9 <code>Arc<mutex>&gt;<\/mutex><\/code>. \u062f\u0644\u06cc\u0644 \u0622\u0646 \u0627\u06cc\u0646 \u0627\u0633\u062a \u06a9\u0647 <code>sqlite::Connection<\/code> \u0628\u0647 \u062e\u0648\u062f\u06cc \u062e\u0648\u062f \u0646\u0645\u06cc \u062a\u0648\u0627\u0646\u062f \u0628\u0647 \u0637\u0648\u0631 \u0627\u06cc\u0645\u0646 \u062f\u0631 \u0633\u0631\u0627\u0633\u0631 \u0631\u0634\u062a\u0647 \u0647\u0627 \u0628\u0647 \u0627\u0634\u062a\u0631\u0627\u06a9 \u06af\u0630\u0627\u0634\u062a\u0647 \u0634\u0648\u062f\u060c \u0628\u0646\u0627\u0628\u0631\u0627\u06cc\u0646 \u0645\u0627 \u0628\u0627\u06cc\u062f \u0622\u0646 \u0631\u0627 \u0642\u0641\u0644 \u06a9\u0646\u06cc\u0645 \u0648 \u0645\u0637\u0645\u0626\u0646 \u0634\u0648\u06cc\u0645 \u06a9\u0647 \u0647\u0645\u0647 \u0627\u0631\u062c\u0627\u0639\u0627\u062a \u0628\u0647 \u0622\u0646 \u0628\u0647 \u062d\u0633\u0627\u0628 \u0645\u06cc \u0622\u06cc\u0646\u062f. <\/p>\n<p>\u0686\u0631\u0627 \u0645\u0627 \u062d\u062a\u06cc \u0645\u06cc \u062e\u0648\u0627\u0647\u06cc\u0645 \u0622\u0646 \u0631\u0627 \u062f\u0631 \u0633\u0631\u0627\u0633\u0631 \u0631\u0634\u062a\u0647 \u0647\u0627 \u0628\u0647 \u0627\u0634\u062a\u0631\u0627\u06a9 \u0628\u06af\u0630\u0627\u0631\u06cc\u0645\u061f \u0622\u06cc\u0627 \u0646\u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u06cc\u0645 \u0641\u0642\u0637 \u0627\u0632 \u0627\u062a\u0635\u0627\u0644 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0646\u06cc\u0645 \u0648 \u0647\u0631 \u0632\u0645\u0627\u0646 \u06a9\u0647 \u0646\u06cc\u0627\u0632 \u062f\u0627\u0634\u062a\u06cc\u0645 \u062f\u0631 \u0631\u0634\u062a\u0647 \u0627\u0635\u0644\u06cc \u06a9\u0648\u0626\u0631\u06cc\u200c\u0647\u0627 \u0631\u0627 \u0628\u0647 \u0635\u0648\u0631\u062a \u0647\u0645\u0632\u0645\u0627\u0646 \u0627\u062c\u0631\u0627 \u06a9\u0646\u06cc\u0645\u061f <\/p>\n<p>\u0645\u0627 \u0645\u06cc \u062a\u0648\u0627\u0646\u0633\u062a\u06cc\u0645\u060c \u0627\u0645\u0627 \u0627\u0632 \u0622\u0646\u062c\u0627\u06cc\u06cc \u06a9\u0647 \u0642\u0631\u0627\u0631 \u0627\u0633\u062a \u0627\u06cc\u0646 \u06cc\u06a9 \u0628\u0631\u0646\u0627\u0645\u0647 \u0631\u0627\u0628\u0637 \u06a9\u0627\u0631\u0628\u0631\u06cc \u06af\u0631\u0627\u0641\u06cc\u06a9\u06cc \u0628\u0633\u06cc\u0627\u0631 \u062a\u0639\u0627\u0645\u0644\u06cc \u0628\u0627\u0634\u062f\u060c \u0645\u0633\u062f\u0648\u062f \u06a9\u0631\u062f\u0646 \u0631\u0634\u062a\u0647 \u0627\u0635\u0644\u06cc \u0627\u06cc\u062f\u0647 \u062e\u0648\u0628\u06cc \u0646\u06cc\u0633\u062a. \u0627\u06af\u0631 \u06a9\u0627\u0631\u0628\u0631 \u0631\u0648\u06cc \u062f\u06a9\u0645\u0647\u200c\u0627\u06cc \u06a9\u0644\u06cc\u06a9 \u0645\u06cc\u200c\u06a9\u0631\u062f\u060c \u062a\u0627 \u0632\u0645\u0627\u0646\u06cc \u06a9\u0647 \u062a\u0645\u0627\u0645 \u062f\u0631\u062e\u0648\u0627\u0633\u062a\u200c\u0647\u0627\u06cc\u06cc \u06a9\u0647 \u0628\u0627 \u0641\u0634\u0627\u0631 \u062f\u0627\u062f\u0646 \u062f\u06a9\u0645\u0647 \u0641\u0639\u0627\u0644 \u0645\u06cc\u200c\u0634\u0648\u0646\u062f\u060c UI \u067e\u0627\u0633\u062e\u06af\u0648 \u0646\u0645\u06cc\u200c\u0634\u0648\u062f. <\/p>\n<p>\u0627\u06cc\u0646 \u0631\u0641\u062a\u0627\u0631\u06cc \u0646\u06cc\u0633\u062a \u06a9\u0647 \u0645\u0627 \u0628\u0647 \u062f\u0646\u0628\u0627\u0644 \u0622\u0646 \u0647\u0633\u062a\u06cc\u0645\u060c \u0648 \u0628\u0646\u0627\u0628\u0631\u0627\u06cc\u0646 \u0645\u06cc\u200c\u062e\u0648\u0627\u0647\u06cc\u0645 \u06cc\u06a9 \u0633\u06cc\u0633\u062a\u0645 \u0627\u0646\u062a\u0642\u0627\u0644 \u0631\u0648\u06cc\u062f\u0627\u062f \u0633\u0627\u062f\u0647 \u0628\u0633\u0627\u0632\u06cc\u0645\u060c \u06a9\u0647 \u0628\u0647 \u0631\u0634\u062a\u0647 \u0627\u0635\u0644\u06cc \u0627\u062c\u0627\u0632\u0647 \u0645\u06cc\u200c\u062f\u0647\u062f \u0631\u0648\u06cc\u062f\u0627\u062f\u0647\u0627 \u0631\u0627 \u0628\u0647 \u06cc\u06a9 \u0631\u0634\u062a\u0647 \u067e\u0633\u200c\u0632\u0645\u06cc\u0646\u0647 \u0627\u0631\u0633\u0627\u0644 \u06a9\u0646\u062f\u060c \u06a9\u0647 \u0633\u067e\u0633 \u06a9\u0627\u0631 \u0648\u0627\u06a9\u0634\u06cc \u062f\u0627\u062f\u0647\u200c\u0647\u0627 \u0631\u0627 \u0628\u0647 \u0635\u0648\u0631\u062a \u0646\u0627\u0647\u0645\u0632\u0645\u0627\u0646 \u0627\u0646\u062c\u0627\u0645 \u0645\u06cc\u200c\u062f\u0647\u062f \u0648 \u0628\u0647 \u0627\u0635\u0644\u06cc \u0627\u0637\u0644\u0627\u0639 \u0645\u06cc\u200c\u062f\u0647\u062f. \u0632\u0645\u0627\u0646\u06cc \u06a9\u0647 \u062f\u0627\u062f\u0647 \u0647\u0627 \u062f\u0631 \u062f\u0633\u062a\u0631\u0633 \u0647\u0633\u062a\u0646\u062f\u060c \u0631\u0634\u062a\u0647 \u06a9\u0646\u06cc\u062f. <\/p>\n<p>\u0628\u06cc\u0627\u06cc\u06cc\u062f \u0628\u0647 \u06a9\u0645\u06a9 \u06a9\u0646\u0646\u062f\u0647 \u0647\u0627\u06cc \u0639\u0645\u0644\u06cc\u0627\u062a \u062f\u0627\u062f\u0647 \u0646\u06af\u0627\u0647 \u06a9\u0646\u06cc\u0645. \u0645\u0627 \u0628\u0627 \u0642\u0631\u0627\u0631 \u062f\u0627\u062f\u0646 \u062d\u06cc\u0648\u0627\u0646\u0627\u062a \u062e\u0627\u0646\u06af\u06cc \u062c\u062f\u06cc\u062f \u062f\u0631 \u067e\u0627\u06cc\u06af\u0627\u0647 \u062f\u0627\u062f\u0647 \u0634\u0631\u0648\u0639 \u0645\u06cc \u06a9\u0646\u06cc\u0645:<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight rust\"><code><span class=\"k\">fn<\/span> <span class=\"nf\">insert_pet_to_db<\/span><span class=\"p\">(<\/span><span class=\"n\">db_con<\/span><span class=\"p\">:<\/span> <span class=\"nb\">Arc<\/span><span class=\"o\"><span class=\"n\">Mutex<\/span><span class=\"o\">&gt;<\/span><span class=\"p\">,<\/span> <span class=\"n\">pet<\/span><span class=\"p\">:<\/span> <span class=\"n\">Pet<\/span><span class=\"p\">)<\/span> <span class=\"k\">-&gt;<\/span> <span class=\"nb\">Result<\/span> <span class=\"p\">{<\/span>\n    <span class=\"k\">let<\/span> <span class=\"n\">con<\/span> <span class=\"o\">=<\/span> <span class=\"n\">db_con<\/span>\n        <span class=\"nf\">.lock<\/span><span class=\"p\">()<\/span>\n        <span class=\"nf\">.map_err<\/span><span class=\"p\">(|<\/span><span class=\"n\">_<\/span><span class=\"p\">|<\/span> <span class=\"nd\">anyhow!<\/span><span class=\"p\">(<\/span><span class=\"s\">\"error while locking db connection\"<\/span><span class=\"p\">))<\/span><span class=\"o\">?<\/span><span class=\"p\">;<\/span>\n    <span class=\"k\">let<\/span> <span class=\"k\">mut<\/span> <span class=\"n\">stmt<\/span> <span class=\"o\">=<\/span> <span class=\"n\">con<\/span><span class=\"nf\">.prepare<\/span><span class=\"p\">(<\/span><span class=\"n\">INSERT_PET<\/span><span class=\"p\">)<\/span><span class=\"o\">?<\/span><span class=\"p\">;<\/span>\n    <span class=\"n\">stmt<\/span><span class=\"nf\">.bind<\/span><span class=\"p\">((<\/span><span class=\"mi\">1<\/span><span class=\"p\">,<\/span> <span class=\"n\">pet<\/span><span class=\"py\">.name<\/span><span class=\"nf\">.as_str<\/span><span class=\"p\">()))<\/span><span class=\"o\">?<\/span><span class=\"p\">;<\/span>\n    <span class=\"n\">stmt<\/span><span class=\"nf\">.bind<\/span><span class=\"p\">((<\/span><span class=\"mi\">2<\/span><span class=\"p\">,<\/span> <span class=\"n\">pet<\/span><span class=\"py\">.age<\/span><span class=\"p\">))<\/span><span class=\"o\">?<\/span><span class=\"p\">;<\/span>\n    <span class=\"n\">stmt<\/span><span class=\"nf\">.bind<\/span><span class=\"p\">((<\/span><span class=\"mi\">3<\/span><span class=\"p\">,<\/span> <span class=\"n\">pet<\/span><span class=\"py\">.kind<\/span><span class=\"na\">.0<\/span><span class=\"nf\">.as_str<\/span><span class=\"p\">()))<\/span><span class=\"o\">?<\/span><span class=\"p\">;<\/span>\n\n    <span class=\"k\">if<\/span> <span class=\"n\">stmt<\/span><span class=\"nf\">.next<\/span><span class=\"p\">()<\/span><span class=\"o\">?<\/span> <span class=\"o\">==<\/span> <span class=\"nn\">sqlite<\/span><span class=\"p\">::<\/span><span class=\"nn\">State<\/span><span class=\"p\">::<\/span><span class=\"n\">Row<\/span> <span class=\"p\">{<\/span>\n        <span class=\"k\">let<\/span> <span class=\"n\">id<\/span> <span class=\"o\">=<\/span> <span class=\"n\">stmt<\/span><span class=\"py\">.read<\/span><span class=\"p\">::<\/span><span class=\"o\"><span class=\"nb\">i64<\/span><span class=\"p\">,<\/span> <span class=\"n\">_<\/span><span class=\"o\">&gt;<\/span><span class=\"p\">(<\/span><span class=\"mi\">0<\/span><span class=\"p\">)<\/span><span class=\"o\">?<\/span><span class=\"p\">;<\/span>\n        <span class=\"k\">let<\/span> <span class=\"n\">name<\/span> <span class=\"o\">=<\/span> <span class=\"n\">stmt<\/span><span class=\"py\">.read<\/span><span class=\"p\">::<\/span><span class=\"o\"><span class=\"nb\">String<\/span><span class=\"p\">,<\/span> <span class=\"n\">_<\/span><span class=\"o\">&gt;<\/span><span class=\"p\">(<\/span><span class=\"mi\">1<\/span><span class=\"p\">)<\/span><span class=\"o\">?<\/span><span class=\"p\">;<\/span>\n        <span class=\"k\">let<\/span> <span class=\"n\">age<\/span> <span class=\"o\">=<\/span> <span class=\"n\">stmt<\/span><span class=\"py\">.read<\/span><span class=\"p\">::<\/span><span class=\"o\"><span class=\"nb\">i64<\/span><span class=\"p\">,<\/span> <span class=\"n\">_<\/span><span class=\"o\">&gt;<\/span><span class=\"p\">(<\/span><span class=\"mi\">2<\/span><span class=\"p\">)<\/span><span class=\"o\">?<\/span><span class=\"p\">;<\/span>\n        <span class=\"k\">let<\/span> <span class=\"n\">kind<\/span> <span class=\"o\">=<\/span> <span class=\"n\">stmt<\/span><span class=\"py\">.read<\/span><span class=\"p\">::<\/span><span class=\"o\"><span class=\"nb\">String<\/span><span class=\"p\">,<\/span> <span class=\"n\">_<\/span><span class=\"o\">&gt;<\/span><span class=\"p\">(<\/span><span class=\"mi\">3<\/span><span class=\"p\">)<\/span><span class=\"o\">?<\/span><span class=\"p\">;<\/span>\n\n        <span class=\"k\">return<\/span> <span class=\"nf\">Ok<\/span><span class=\"p\">(<\/span><span class=\"n\">Pet<\/span> <span class=\"p\">{<\/span>\n            <span class=\"n\">id<\/span><span class=\"p\">,<\/span>\n            <span class=\"n\">name<\/span><span class=\"p\">,<\/span>\n            <span class=\"n\">age<\/span><span class=\"p\">,<\/span>\n            <span class=\"n\">kind<\/span><span class=\"p\">:<\/span> <span class=\"nf\">PetKind<\/span><span class=\"p\">(<\/span><span class=\"n\">kind<\/span><span class=\"p\">),<\/span>\n        <span class=\"p\">});<\/span>\n    <span class=\"p\">}<\/span>\n\n    <span class=\"nf\">Err<\/span><span class=\"p\">(<\/span><span class=\"nd\">anyhow!<\/span><span class=\"p\">(<\/span><span class=\"s\">\"error while inserting pet\"<\/span><span class=\"p\">))<\/span>\n<span class=\"p\">}<\/span>\n<\/span><\/span><\/span><\/span><\/span><\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<p>\u0627\u0628\u062a\u062f\u0627 \u0628\u0627\u06cc\u062f \u06cc\u06a9 \u0642\u0641\u0644 \u0628\u0631\u0627\u06cc \u0627\u062a\u0635\u0627\u0644 \u067e\u0627\u06cc\u06af\u0627\u0647 \u062f\u0627\u062f\u0647 \u0645\u0634\u062a\u0631\u06a9 \u062e\u0648\u062f \u062f\u0627\u0634\u062a\u0647 \u0628\u0627\u0634\u06cc\u0645\u060c \u0628\u0646\u0627\u0628\u0631\u0627\u06cc\u0646 \u0645\u0637\u0645\u0626\u0646 \u0647\u0633\u062a\u06cc\u0645 \u06a9\u0647 \u062a\u0646\u0647\u0627 \u0645\u0627 \u0627\u0632 \u0622\u0646 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc \u06a9\u0646\u06cc\u0645. \u0633\u067e\u0633\u060c \u06cc\u06a9 \u0639\u0628\u0627\u0631\u062a \u0622\u0645\u0627\u062f\u0647 \u0634\u062f\u0647 \u0628\u0627 \u067e\u0631\u0633 \u0648 \u062c\u0648 \u062a\u0639\u0631\u06cc\u0641 \u0634\u062f\u0647 \u062f\u0631 \u0628\u0627\u0644\u0627 \u0627\u06cc\u062c\u0627\u062f \u0645\u06cc \u06a9\u0646\u06cc\u0645 \u0648 \u0645\u0642\u0627\u062f\u06cc\u0631 \u0648\u0631\u0648\u062f\u06cc \u0631\u0627 \u0628\u0647 \u0647\u0645\u062a\u0627\u06cc\u0627\u0646 \u0645\u0631\u0628\u0648\u0637\u0647 \u062e\u0648\u062f \u062f\u0631 \u067e\u0631\u0633 \u0648 \u062c\u0648 \u0645\u062a\u0635\u0644 \u0645\u06cc \u06a9\u0646\u06cc\u0645. <\/p>\n<p>\u0633\u067e\u0633\u060c \u06a9\u0648\u0626\u0631\u06cc \u0631\u0627 \u0627\u062c\u0631\u0627 \u0645\u06cc \u06a9\u0646\u06cc\u0645 \u0648 \u06cc\u06a9 \u067e\u0631\u0633 \u0648 \u062c\u0648 \u062c\u062f\u06cc\u062f \u0627\u06cc\u062c\u0627\u062f \u0645\u06cc \u06a9\u0646\u06cc\u0645 <code>Pet<\/code> \u0627\u0632 \u0631\u062f\u06cc\u0641 \u0628\u0631\u06af\u0634\u062a\u06cc \u0627\u06af\u0631 \u0639\u0645\u0644\u06cc\u0627\u062a \u0646\u0627\u0645\u0648\u0641\u0642 \u0628\u0627\u0634\u062f\u060c \u062e\u0637\u0627 \u0631\u0627 \u0645\u0646\u062a\u0634\u0631 \u0645\u06cc \u06a9\u0646\u06cc\u0645. <\/p>\n<p>\u0628\u06cc\u0627\u06cc\u06cc\u062f \u062f\u0631 \u0627\u062f\u0627\u0645\u0647 \u0628\u0647 \u062d\u0630\u0641 \u062d\u06cc\u0648\u0627\u0646 \u062e\u0627\u0646\u06af\u06cc \u0646\u06af\u0627\u0647 \u06a9\u0646\u06cc\u0645:<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight rust\"><code><span class=\"k\">fn<\/span> <span class=\"nf\">delete_pet_from_db<\/span><span class=\"p\">(<\/span><span class=\"n\">db_con<\/span><span class=\"p\">:<\/span> <span class=\"nb\">Arc<\/span><span class=\"o\"><span class=\"n\">Mutex<\/span><span class=\"o\">&gt;<\/span><span class=\"p\">,<\/span> <span class=\"n\">pet_id<\/span><span class=\"p\">:<\/span> <span class=\"nb\">i64<\/span><span class=\"p\">)<\/span> <span class=\"k\">-&gt;<\/span> <span class=\"nb\">Result<\/span><span class=\"o\"><span class=\"p\">()<\/span><span class=\"o\">&gt;<\/span> <span class=\"p\">{<\/span>\n    <span class=\"k\">let<\/span> <span class=\"n\">con<\/span> <span class=\"o\">=<\/span> <span class=\"n\">db_con<\/span>\n        <span class=\"nf\">.lock<\/span><span class=\"p\">()<\/span>\n        <span class=\"nf\">.map_err<\/span><span class=\"p\">(|<\/span><span class=\"n\">_<\/span><span class=\"p\">|<\/span> <span class=\"nd\">anyhow!<\/span><span class=\"p\">(<\/span><span class=\"s\">\"error while locking db connection\"<\/span><span class=\"p\">))<\/span><span class=\"o\">?<\/span><span class=\"p\">;<\/span>\n    <span class=\"k\">let<\/span> <span class=\"k\">mut<\/span> <span class=\"n\">stmt<\/span> <span class=\"o\">=<\/span> <span class=\"n\">con<\/span><span class=\"nf\">.prepare<\/span><span class=\"p\">(<\/span><span class=\"n\">DELETE_PET_BY_ID<\/span><span class=\"p\">)<\/span><span class=\"o\">?<\/span><span class=\"p\">;<\/span>\n    <span class=\"n\">stmt<\/span><span class=\"nf\">.bind<\/span><span class=\"p\">((<\/span><span class=\"mi\">1<\/span><span class=\"p\">,<\/span> <span class=\"n\">pet_id<\/span><span class=\"p\">))<\/span><span class=\"o\">?<\/span><span class=\"p\">;<\/span>\n\n    <span class=\"k\">if<\/span> <span class=\"n\">stmt<\/span><span class=\"nf\">.next<\/span><span class=\"p\">()<\/span><span class=\"o\">?<\/span> <span class=\"o\">==<\/span> <span class=\"nn\">sqlite<\/span><span class=\"p\">::<\/span><span class=\"nn\">State<\/span><span class=\"p\">::<\/span><span class=\"n\">Done<\/span> <span class=\"p\">{<\/span>\n        <span class=\"nf\">Ok<\/span><span class=\"p\">(())<\/span>\n    <span class=\"p\">}<\/span> <span class=\"k\">else<\/span> <span class=\"p\">{<\/span>\n        <span class=\"nf\">Err<\/span><span class=\"p\">(<\/span><span class=\"nd\">anyhow!<\/span><span class=\"p\">(<\/span><span class=\"s\">\"error while deleting pet with id {}\"<\/span><span class=\"p\">,<\/span> <span class=\"n\">pet_id<\/span><span class=\"p\">))<\/span>\n    <span class=\"p\">}<\/span>\n<span class=\"p\">}<\/span>\n<\/span><\/span><\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<p>\u062d\u0630\u0641 \u062d\u06cc\u0648\u0627\u0646 \u062e\u0627\u0646\u06af\u06cc \u0628\u0633\u06cc\u0627\u0631 \u0633\u0627\u062f\u0647 \u0627\u0633\u062a. \u0645\u0627 \u06cc\u06a9 \u0642\u0641\u0644 \u0628\u0631\u0627\u06cc \u0627\u062a\u0635\u0627\u0644 \u067e\u0627\u06cc\u06af\u0627\u0647 \u062f\u0627\u062f\u0647 \u062e\u0648\u062f \u0628\u0647 \u062f\u0633\u062a \u0645\u06cc \u0622\u0648\u0631\u06cc\u0645 \u0648 \u0628\u0647 \u0633\u0627\u062f\u06af\u06cc \u06a9\u0648\u0626\u0631\u06cc \u062d\u0630\u0641 \u0631\u0627 \u0627\u062c\u0631\u0627 \u0645\u06cc \u06a9\u0646\u06cc\u0645 \u0648 \u0647\u0631 \u06af\u0648\u0646\u0647 \u062e\u0637\u0627\u06cc \u0631\u062e \u062f\u0627\u062f\u0647 \u0631\u0627 \u0645\u062f\u06cc\u0631\u06cc\u062a \u0645\u06cc \u06a9\u0646\u06cc\u0645:<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight rust\"><code><span class=\"k\">fn<\/span> <span class=\"nf\">get_pet_from_db<\/span><span class=\"p\">(<\/span><span class=\"n\">db_con<\/span><span class=\"p\">:<\/span> <span class=\"nb\">Arc<\/span><span class=\"o\"><span class=\"n\">Mutex<\/span><span class=\"o\">&gt;<\/span><span class=\"p\">,<\/span> <span class=\"n\">pet_id<\/span><span class=\"p\">:<\/span> <span class=\"nb\">i64<\/span><span class=\"p\">)<\/span> <span class=\"k\">-&gt;<\/span> <span class=\"nb\">Result<\/span><span class=\"o\"><span class=\"n\">option<\/span><span class=\"o\">&gt;<\/span> <span class=\"p\">{<\/span>\n    <span class=\"k\">let<\/span> <span class=\"n\">con<\/span> <span class=\"o\">=<\/span> <span class=\"n\">db_con<\/span>\n        <span class=\"nf\">.lock<\/span><span class=\"p\">()<\/span>\n        <span class=\"nf\">.map_err<\/span><span class=\"p\">(|<\/span><span class=\"n\">_<\/span><span class=\"p\">|<\/span> <span class=\"nd\">anyhow!<\/span><span class=\"p\">(<\/span><span class=\"s\">\"error while locking db connection\"<\/span><span class=\"p\">))<\/span><span class=\"o\">?<\/span><span class=\"p\">;<\/span>\n    <span class=\"k\">let<\/span> <span class=\"k\">mut<\/span> <span class=\"n\">stmt<\/span> <span class=\"o\">=<\/span> <span class=\"n\">con<\/span><span class=\"nf\">.prepare<\/span><span class=\"p\">(<\/span><span class=\"n\">GET_PET_BY_ID<\/span><span class=\"p\">)<\/span><span class=\"o\">?<\/span><span class=\"p\">;<\/span>\n    <span class=\"n\">stmt<\/span><span class=\"nf\">.bind<\/span><span class=\"p\">((<\/span><span class=\"mi\">1<\/span><span class=\"p\">,<\/span> <span class=\"n\">pet_id<\/span><span class=\"p\">))<\/span><span class=\"o\">?<\/span><span class=\"p\">;<\/span>\n\n    <span class=\"k\">if<\/span> <span class=\"n\">stmt<\/span><span class=\"nf\">.next<\/span><span class=\"p\">()<\/span><span class=\"o\">?<\/span> <span class=\"o\">==<\/span> <span class=\"nn\">sqlite<\/span><span class=\"p\">::<\/span><span class=\"nn\">State<\/span><span class=\"p\">::<\/span><span class=\"n\">Row<\/span> <span class=\"p\">{<\/span>\n        <span class=\"k\">let<\/span> <span class=\"n\">id<\/span> <span class=\"o\">=<\/span> <span class=\"n\">stmt<\/span><span class=\"py\">.read<\/span><span class=\"p\">::<\/span><span class=\"o\"><span class=\"nb\">i64<\/span><span class=\"p\">,<\/span> <span class=\"n\">_<\/span><span class=\"o\">&gt;<\/span><span class=\"p\">(<\/span><span class=\"mi\">0<\/span><span class=\"p\">)<\/span><span class=\"o\">?<\/span><span class=\"p\">;<\/span>\n        <span class=\"k\">let<\/span> <span class=\"n\">name<\/span> <span class=\"o\">=<\/span> <span class=\"n\">stmt<\/span><span class=\"py\">.read<\/span><span class=\"p\">::<\/span><span class=\"o\"><span class=\"nb\">String<\/span><span class=\"p\">,<\/span> <span class=\"n\">_<\/span><span class=\"o\">&gt;<\/span><span class=\"p\">(<\/span><span class=\"mi\">1<\/span><span class=\"p\">)<\/span><span class=\"o\">?<\/span><span class=\"p\">;<\/span>\n        <span class=\"k\">let<\/span> <span class=\"n\">age<\/span> <span class=\"o\">=<\/span> <span class=\"n\">stmt<\/span><span class=\"py\">.read<\/span><span class=\"p\">::<\/span><span class=\"o\"><span class=\"nb\">i64<\/span><span class=\"p\">,<\/span> <span class=\"n\">_<\/span><span class=\"o\">&gt;<\/span><span class=\"p\">(<\/span><span class=\"mi\">2<\/span><span class=\"p\">)<\/span><span class=\"o\">?<\/span><span class=\"p\">;<\/span>\n        <span class=\"k\">let<\/span> <span class=\"n\">kind<\/span> <span class=\"o\">=<\/span> <span class=\"n\">stmt<\/span><span class=\"py\">.read<\/span><span class=\"p\">::<\/span><span class=\"o\"><span class=\"nb\">String<\/span><span class=\"p\">,<\/span> <span class=\"n\">_<\/span><span class=\"o\">&gt;<\/span><span class=\"p\">(<\/span><span class=\"mi\">3<\/span><span class=\"p\">)<\/span><span class=\"o\">?<\/span><span class=\"p\">;<\/span>\n\n        <span class=\"k\">return<\/span> <span class=\"nf\">Ok<\/span><span class=\"p\">(<\/span><span class=\"nf\">Some<\/span><span class=\"p\">(<\/span><span class=\"n\">Pet<\/span> <span class=\"p\">{<\/span>\n            <span class=\"n\">id<\/span><span class=\"p\">,<\/span>\n            <span class=\"n\">name<\/span><span class=\"p\">,<\/span>\n            <span class=\"n\">age<\/span><span class=\"p\">,<\/span>\n            <span class=\"n\">kind<\/span><span class=\"p\">:<\/span> <span class=\"nf\">PetKind<\/span><span class=\"p\">(<\/span><span class=\"n\">kind<\/span><span class=\"p\">),<\/span>\n        <span class=\"p\">}));<\/span>\n    <span class=\"p\">}<\/span>\n    <span class=\"nf\">Ok<\/span><span class=\"p\">(<\/span><span class=\"nb\">None<\/span><span class=\"p\">)<\/span>\n<span class=\"p\">}<\/span>\n\n<span class=\"k\">fn<\/span> <span class=\"nf\">get_pets_from_db<\/span><span class=\"p\">(<\/span><span class=\"n\">db_con<\/span><span class=\"p\">:<\/span> <span class=\"nb\">Arc<\/span><span class=\"o\"><span class=\"n\">Mutex<\/span><span class=\"o\">&gt;<\/span><span class=\"p\">)<\/span> <span class=\"k\">-&gt;<\/span> <span class=\"nb\">Result<\/span><span class=\"o\"><span class=\"nb\">Vec<\/span><span class=\"o\">&gt;<\/span> <span class=\"p\">{<\/span>\n    <span class=\"k\">let<\/span> <span class=\"n\">con<\/span> <span class=\"o\">=<\/span> <span class=\"n\">db_con<\/span>\n        <span class=\"nf\">.lock<\/span><span class=\"p\">()<\/span>\n        <span class=\"nf\">.map_err<\/span><span class=\"p\">(|<\/span><span class=\"n\">_<\/span><span class=\"p\">|<\/span> <span class=\"nd\">anyhow!<\/span><span class=\"p\">(<\/span><span class=\"s\">\"error while locking db connection\"<\/span><span class=\"p\">))<\/span><span class=\"o\">?<\/span><span class=\"p\">;<\/span>\n    <span class=\"k\">let<\/span> <span class=\"k\">mut<\/span> <span class=\"n\">pets<\/span><span class=\"p\">:<\/span> <span class=\"nb\">Vec<\/span> <span class=\"o\">=<\/span> <span class=\"nd\">vec!<\/span><span class=\"p\">[];<\/span>\n    <span class=\"k\">let<\/span> <span class=\"k\">mut<\/span> <span class=\"n\">stmt<\/span> <span class=\"o\">=<\/span> <span class=\"n\">con<\/span><span class=\"nf\">.prepare<\/span><span class=\"p\">(<\/span><span class=\"n\">GET_PETS<\/span><span class=\"p\">)<\/span><span class=\"o\">?<\/span><span class=\"p\">;<\/span>\n\n    <span class=\"k\">for<\/span> <span class=\"n\">row<\/span> <span class=\"k\">in<\/span> <span class=\"n\">stmt<\/span><span class=\"nf\">.iter<\/span><span class=\"p\">()<\/span> <span class=\"p\">{<\/span>\n        <span class=\"k\">let<\/span> <span class=\"n\">row<\/span> <span class=\"o\">=<\/span> <span class=\"n\">row<\/span><span class=\"o\">?<\/span><span class=\"p\">;<\/span>\n        <span class=\"k\">let<\/span> <span class=\"n\">id<\/span> <span class=\"o\">=<\/span> <span class=\"n\">row<\/span><span class=\"py\">.read<\/span><span class=\"p\">::<\/span><span class=\"o\"><span class=\"nb\">i64<\/span><span class=\"p\">,<\/span> <span class=\"n\">_<\/span><span class=\"o\">&gt;<\/span><span class=\"p\">(<\/span><span class=\"mi\">0<\/span><span class=\"p\">);<\/span>\n        <span class=\"k\">let<\/span> <span class=\"n\">name<\/span> <span class=\"o\">=<\/span> <span class=\"n\">row<\/span><span class=\"py\">.read<\/span><span class=\"p\">::<\/span><span class=\"o\"><span class=\"nb\">str<\/span><span class=\"p\">,<\/span> <span class=\"n\">_<\/span><span class=\"o\">&gt;<\/span><span class=\"p\">(<\/span><span class=\"mi\">1<\/span><span class=\"p\">);<\/span>\n        <span class=\"k\">let<\/span> <span class=\"n\">age<\/span> <span class=\"o\">=<\/span> <span class=\"n\">row<\/span><span class=\"py\">.read<\/span><span class=\"p\">::<\/span><span class=\"o\"><span class=\"nb\">i64<\/span><span class=\"p\">,<\/span> <span class=\"n\">_<\/span><span class=\"o\">&gt;<\/span><span class=\"p\">(<\/span><span class=\"mi\">2<\/span><span class=\"p\">);<\/span>\n        <span class=\"k\">let<\/span> <span class=\"n\">kind<\/span> <span class=\"o\">=<\/span> <span class=\"n\">row<\/span><span class=\"py\">.read<\/span><span class=\"p\">::<\/span><span class=\"o\"><span class=\"nb\">str<\/span><span class=\"p\">,<\/span> <span class=\"n\">_<\/span><span class=\"o\">&gt;<\/span><span class=\"p\">(<\/span><span class=\"mi\">3<\/span><span class=\"p\">);<\/span>\n\n        <span class=\"n\">pets<\/span><span class=\"nf\">.push<\/span><span class=\"p\">(<\/span><span class=\"n\">Pet<\/span> <span class=\"p\">{<\/span>\n            <span class=\"n\">id<\/span><span class=\"p\">,<\/span>\n            <span class=\"n\">name<\/span><span class=\"p\">:<\/span> <span class=\"n\">name<\/span><span class=\"nf\">.to_owned<\/span><span class=\"p\">(),<\/span>\n            <span class=\"n\">age<\/span><span class=\"p\">,<\/span>\n            <span class=\"n\">kind<\/span><span class=\"p\">:<\/span> <span class=\"nf\">PetKind<\/span><span class=\"p\">(<\/span><span class=\"n\">kind<\/span><span class=\"nf\">.to_owned<\/span><span class=\"p\">()),<\/span>\n        <span class=\"p\">});<\/span>\n    <span class=\"p\">}<\/span>\n    <span class=\"nf\">Ok<\/span><span class=\"p\">(<\/span><span class=\"n\">pets<\/span><span class=\"p\">)<\/span>\n<span class=\"p\">}<\/span>\n<\/span><\/span><\/span><\/span><\/span><\/span><\/span><\/span><\/span><\/span><\/span><\/span><\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<p>\u0648\u0627\u06a9\u0634\u06cc \u06cc\u06a9 \u062d\u06cc\u0648\u0627\u0646 \u062e\u0627\u0646\u06af\u06cc \u0627\u0632 \u067e\u0627\u06cc\u06af\u0627\u0647 \u062f\u0627\u062f\u0647 \u0648 \u0648\u0627\u06a9\u0634\u06cc \u0647\u0645\u0647 \u062d\u06cc\u0648\u0627\u0646\u0627\u062a \u062e\u0627\u0646\u06af\u06cc \u06a9\u0627\u0645\u0644\u0627\u064b \u0645\u0634\u0627\u0628\u0647 \u0647\u0633\u062a\u0646\u062f. \u062f\u0631 \u0647\u0631 \u062f\u0648 \u0645\u0648\u0631\u062f\u060c \u0645\u0627 \u062f\u0648\u0628\u0627\u0631\u0647 \u06cc\u06a9 \u0642\u0641\u0644 \u0628\u0631\u0627\u06cc \u0627\u062a\u0635\u0627\u0644 \u067e\u0627\u06cc\u06af\u0627\u0647 \u062f\u0627\u062f\u0647 \u0645\u06cc \u06af\u06cc\u0631\u06cc\u0645\u060c \u062f\u0633\u062a\u0648\u0631 \u0631\u0627 \u0628\u0627 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 \u067e\u0631\u0633 \u0648 \u062c\u0648 \u0622\u0645\u0627\u062f\u0647 \u0645\u06cc \u06a9\u0646\u06cc\u0645\u060c \u067e\u0631\u0633 \u0648 \u062c\u0648 \u0631\u0627 \u0627\u062c\u0631\u0627 \u0645\u06cc \u06a9\u0646\u06cc\u0645 \u0648 \u062f\u0627\u062f\u0647 \u0647\u0627\u06cc \u062e\u0631\u0648\u062c\u06cc \u062e\u0648\u062f \u0631\u0627 \u0627\u0632 \u062f\u0627\u062f\u0647 \u0647\u0627\u06cc \u0631\u062f\u06cc\u0641 \u0647\u0627\u06cc \u0628\u0631\u06af\u0634\u062a\u06cc \u0645\u06cc \u0633\u0627\u0632\u06cc\u0645. <\/p>\n<p>\u0627\u06cc\u0646 \u0628\u0631\u0627\u06cc \u0645\u062f\u0644 \u062f\u0627\u062f\u0647 \u0645\u0627 \u0648 \u062f\u0633\u062a\u0631\u0633\u06cc \u0628\u0647 \u062f\u0627\u062f\u0647 \u0627\u0633\u062a! <\/p>\n<p>\u062f\u0631 \u0628\u0627\u0644\u0627 \u0630\u06a9\u0631 \u06a9\u0631\u062f\u06cc\u0645 \u06a9\u0647 \u0645\u06cc\u200c\u062e\u0648\u0627\u0647\u06cc\u0645 \u062a\u0635\u0627\u0648\u06cc\u0631 \u062a\u0635\u0627\u062f\u0641\u06cc \u0631\u0627 \u0628\u0631\u0627\u06cc \u06af\u0631\u0628\u0647\u200c\u0647\u0627 \u0648 \u0633\u06af\u200c\u0647\u0627 \u0648\u0627\u06a9\u0634\u06cc \u06a9\u0646\u06cc\u0645 \u062a\u0627 \u0628\u0631\u0646\u0627\u0645\u0647 \u06a9\u0645\u06cc \u0632\u0646\u062f\u0647\u200c\u062a\u0631 \u0628\u0647 \u0646\u0638\u0631 \u0628\u0631\u0633\u062f\u060c \u0628\u0646\u0627\u0628\u0631\u0627\u06cc\u0646 \u0628\u06cc\u0627\u06cc\u06cc\u062f \u0622\u0646 \u0642\u0633\u0645\u062a \u0631\u0627 \u062f\u0631 \u0627\u062f\u0627\u0645\u0647 \u067e\u06cc\u0627\u062f\u0647\u200c\u0633\u0627\u0632\u06cc \u06a9\u0646\u06cc\u0645.<\/p>\n<h2><span class=\"ez-toc-section\" id=\"%D9%88%D8%A7%DA%A9%D8%B4%DB%8C_%D8%AA%D8%B5%D8%A7%D9%88%DB%8C%D8%B1_%D8%AA%D8%B5%D8%A7%D8%AF%D9%81%DB%8C_%D8%A8%D8%B1%D8%A7%DB%8C_%DA%AF%D8%B1%D8%A8%D9%87_%D9%87%D8%A7_%D9%88_%D8%B3%DA%AF_%D9%87%D8%A7\"><\/span>\n<p>  \u0648\u0627\u06a9\u0634\u06cc \u062a\u0635\u0627\u0648\u06cc\u0631 \u062a\u0635\u0627\u062f\u0641\u06cc \u0628\u0631\u0627\u06cc \u06af\u0631\u0628\u0647 \u0647\u0627 \u0648 \u0633\u06af \u0647\u0627<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>\u0628\u0631\u0627\u06cc \u0648\u0627\u06a9\u0634\u06cc \u062a\u0635\u0627\u0648\u06cc\u0631 \u0633\u06af\u060c \u0627\u0632 https:\/\/dog.ceo\/api\/breeds\/image\/random \u0648 \u0628\u0631\u0627\u06cc \u06af\u0631\u0628\u0647 \u0647\u0627 \u0627\u0632 https:\/\/api.thecatapi.com\/v1\/images\/search \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc \u06a9\u0646\u06cc\u0645. <\/p>\n<p>\u0647\u0631 \u062f\u0648\u06cc \u0627\u06cc\u0646 API\u0647\u0627 \u0628\u0647 \u0645\u0627 \u0627\u062c\u0627\u0632\u0647 \u0645\u06cc\u200c\u062f\u0647\u0646\u062f \u0686\u0646\u062f \u067e\u0631\u0633\u200c\u0648\u062c\u0648 \u0631\u0627 \u0631\u0627\u06cc\u06af\u0627\u0646 \u0627\u0646\u062c\u0627\u0645 \u062f\u0647\u06cc\u0645\u060c \u06a9\u0647 \u0628\u0631\u0627\u06cc \u0622\u0632\u0645\u0627\u06cc\u0634 \u062e\u0648\u0628 \u0627\u0633\u062a. \u0627\u06af\u0631 \u0686\u0646\u062f \u062f\u0631\u062e\u0648\u0627\u0633\u062a \u0622\u0632\u0645\u0627\u06cc\u0634\u06cc \u0627\u0646\u062c\u0627\u0645 \u062f\u0647\u06cc\u0645\u060c \u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u06cc\u0645 \u0628\u0628\u06cc\u0646\u06cc\u0645 \u06a9\u0647 \u062f\u0627\u062f\u0647\u200c\u0647\u0627\u06cc \u0628\u0631\u06af\u0634\u062a\u06cc \u0686\u06af\u0648\u0646\u0647 \u0628\u0647 \u0646\u0638\u0631 \u0645\u06cc\u200c\u0631\u0633\u0646\u062f\u060c \u0648 \u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u06cc\u0645 \u06cc\u06a9 \u0645\u062f\u0644 \u062f\u0627\u062f\u0647 \u0628\u0631\u0627\u06cc \u067e\u0627\u0633\u062e\u200c\u0647\u0627\u06cc JSON \u0647\u0631 \u062f\u0648 API \u0627\u06cc\u062c\u0627\u062f \u06a9\u0646\u06cc\u0645:<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight rust\"><code><span class=\"nd\">#[derive(Debug,<\/span> <span class=\"nd\">Deserialize)]<\/span>\n<span class=\"k\">struct<\/span> <span class=\"n\">CatJSON<\/span> <span class=\"p\">{<\/span>\n    <span class=\"nd\">#[serde(alias<\/span> <span class=\"nd\">=<\/span> <span class=\"s\">\"0\"<\/span><span class=\"nd\">)]<\/span>\n    <span class=\"n\">item<\/span><span class=\"p\">:<\/span> <span class=\"n\">CatJSONInner<\/span><span class=\"p\">,<\/span>\n<span class=\"p\">}<\/span>\n\n<span class=\"nd\">#[derive(Debug,<\/span> <span class=\"nd\">Deserialize)]<\/span>\n<span class=\"k\">struct<\/span> <span class=\"n\">CatJSONInner<\/span> <span class=\"p\">{<\/span>\n    <span class=\"n\">url<\/span><span class=\"p\">:<\/span> <span class=\"nb\">String<\/span><span class=\"p\">,<\/span>\n<span class=\"p\">}<\/span>\n\n<span class=\"nd\">#[derive(Debug,<\/span> <span class=\"nd\">Deserialize)]<\/span>\n<span class=\"k\">struct<\/span> <span class=\"n\">DogJSON<\/span> <span class=\"p\">{<\/span>\n    <span class=\"n\">message<\/span><span class=\"p\">:<\/span> <span class=\"nb\">String<\/span><span class=\"p\">,<\/span>\n<span class=\"p\">}<\/span>\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<p>\u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc \u06a9\u0646\u06cc\u0645 <code>serde::Deserialize<\/code> \u062a\u0627 \u0628\u062a\u0648\u0627\u0646\u06cc\u0645 JSON \u0628\u0631\u06af\u0631\u062f\u0627\u0646\u062f\u0647 \u0634\u062f\u0647 \u0631\u0627 \u0628\u0647 \u0627\u0646\u0648\u0627\u0639 \u062e\u0648\u062f \u063a\u06cc\u0631 \u0633\u0631\u06cc\u0627\u0644\u06cc \u06a9\u0646\u06cc\u0645. \u0645\u0631\u062d\u0644\u0647 \u0628\u0639\u062f\u06cc \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 <code>ehttp<\/code> \u0628\u0631\u0627\u06cc \u0627\u06cc\u062c\u0627\u062f \u06cc\u06a9 \u062f\u0631\u062e\u0648\u0627\u0633\u062a HTTP \u0628\u0647 API \u0647\u0627\u06cc \u0645\u0631\u0628\u0648\u0637\u0647\u060c \u062a\u062c\u0632\u06cc\u0647 \u067e\u0627\u0633\u062e \u0648 \u0645\u062f\u06cc\u0631\u06cc\u062a URL \u0647\u0627\u06cc\u06cc \u06a9\u0647 \u062f\u0631\u06cc\u0627\u0641\u062a \u0645\u06cc \u06a9\u0646\u06cc\u0645:<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight rust\"><code><span class=\"k\">fn<\/span> <span class=\"nf\">fetch_pet_image<\/span><span class=\"p\">(<\/span><span class=\"n\">ctx<\/span><span class=\"p\">:<\/span> <span class=\"nn\">egui<\/span><span class=\"p\">::<\/span><span class=\"n\">Context<\/span><span class=\"p\">,<\/span> <span class=\"n\">pet_kind<\/span><span class=\"p\">:<\/span> <span class=\"n\">PetKind<\/span><span class=\"p\">,<\/span> <span class=\"n\">sender<\/span><span class=\"p\">:<\/span> <span class=\"n\">Sender<\/span><span class=\"p\">)<\/span> <span class=\"p\">{<\/span>\n    <span class=\"k\">let<\/span> <span class=\"n\">url<\/span> <span class=\"o\">=<\/span> <span class=\"k\">if<\/span> <span class=\"n\">pet_kind<\/span><span class=\"na\">.0<\/span> <span class=\"o\">==<\/span> <span class=\"s\">\"dog\"<\/span> <span class=\"p\">{<\/span>\n        <span class=\"s\">\"https:\/\/dog.ceo\/api\/breeds\/image\/random\"<\/span>\n    <span class=\"p\">}<\/span> <span class=\"k\">else<\/span> <span class=\"p\">{<\/span>\n        <span class=\"s\">\"https:\/\/api.thecatapi.com\/v1\/images\/search\"<\/span>\n    <span class=\"p\">};<\/span>\n    <span class=\"nn\">ehttp<\/span><span class=\"p\">::<\/span><span class=\"nf\">fetch<\/span><span class=\"p\">(<\/span>\n        <span class=\"nn\">ehttp<\/span><span class=\"p\">::<\/span><span class=\"nn\">Request<\/span><span class=\"p\">::<\/span><span class=\"nf\">get<\/span><span class=\"p\">(<\/span><span class=\"n\">url<\/span><span class=\"p\">),<\/span>\n        <span class=\"k\">move<\/span> <span class=\"p\">|<\/span><span class=\"n\">result<\/span><span class=\"p\">:<\/span> <span class=\"nn\">ehttp<\/span><span class=\"p\">::<\/span><span class=\"nb\">Result<\/span><span class=\"p\">|<\/span> <span class=\"p\">{<\/span>\n            <span class=\"k\">if<\/span> <span class=\"k\">let<\/span> <span class=\"nf\">Ok<\/span><span class=\"p\">(<\/span><span class=\"n\">result<\/span><span class=\"p\">)<\/span> <span class=\"o\">=<\/span> <span class=\"n\">result<\/span> <span class=\"p\">{<\/span>\n                <span class=\"k\">let<\/span> <span class=\"n\">image_url<\/span> <span class=\"o\">=<\/span> <span class=\"k\">if<\/span> <span class=\"n\">pet_kind<\/span><span class=\"na\">.0<\/span> <span class=\"o\">==<\/span> <span class=\"s\">\"dog\"<\/span> <span class=\"p\">{<\/span>\n                    <span class=\"k\">if<\/span> <span class=\"k\">let<\/span> <span class=\"nf\">Ok<\/span><span class=\"p\">(<\/span><span class=\"n\">json<\/span><span class=\"p\">)<\/span> <span class=\"o\">=<\/span> <span class=\"n\">result<\/span><span class=\"py\">.json<\/span><span class=\"p\">::()<\/span> <span class=\"p\">{<\/span>\n                        <span class=\"nf\">Some<\/span><span class=\"p\">(<\/span><span class=\"n\">json<\/span><span class=\"py\">.message<\/span><span class=\"p\">)<\/span>\n                    <span class=\"p\">}<\/span> <span class=\"k\">else<\/span> <span class=\"p\">{<\/span>\n                        <span class=\"nb\">None<\/span>\n                    <span class=\"p\">}<\/span>\n                <span class=\"p\">}<\/span> <span class=\"k\">else<\/span> <span class=\"k\">if<\/span> <span class=\"k\">let<\/span> <span class=\"nf\">Ok<\/span><span class=\"p\">(<\/span><span class=\"n\">json<\/span><span class=\"p\">)<\/span> <span class=\"o\">=<\/span> <span class=\"n\">result<\/span><span class=\"py\">.json<\/span><span class=\"p\">::()<\/span> <span class=\"p\">{<\/span>\n                    <span class=\"nf\">Some<\/span><span class=\"p\">(<\/span><span class=\"n\">json<\/span><span class=\"py\">.item.url<\/span><span class=\"p\">)<\/span>\n                <span class=\"p\">}<\/span> <span class=\"k\">else<\/span> <span class=\"p\">{<\/span>\n                    <span class=\"nb\">None<\/span>\n                <span class=\"p\">};<\/span>\n                <span class=\"k\">let<\/span> <span class=\"n\">_<\/span> <span class=\"o\">=<\/span> <span class=\"n\">sender<\/span><span class=\"nf\">.send<\/span><span class=\"p\">(<\/span><span class=\"nn\">Event<\/span><span class=\"p\">::<\/span><span class=\"nf\">SetPetImage<\/span><span class=\"p\">(<\/span><span class=\"n\">image_url<\/span><span class=\"p\">));<\/span>\n                <span class=\"n\">ctx<\/span><span class=\"nf\">.request_repaint<\/span><span class=\"p\">();<\/span>\n            <span class=\"p\">}<\/span>\n        <span class=\"p\">},<\/span>\n    <span class=\"p\">);<\/span>\n<span class=\"p\">}<\/span>\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<p>\u0627\u06af\u0631 \u0628\u0647 \u0627\u0645\u0636\u0627\u06cc \u062a\u0627\u0628\u0639 \u0646\u06af\u0627\u0647 \u06a9\u0646\u06cc\u0645\u060c \u0645\u06cc \u0628\u06cc\u0646\u06cc\u0645 <code>egui::Context<\/code>\u060c <code>PetKind<\/code>\u060c \u0648 <code>Sender<event\/><\/code>. \u0627\u06cc\u0646\u0647\u0627 \u0686\u06cc\u0633\u062a \u0648 \u0645\u0627 \u0628\u0631\u0627\u06cc \u0686\u0647 \u0628\u0647 \u0622\u0646\u0647\u0627 \u0646\u06cc\u0627\u0632 \u062f\u0627\u0631\u06cc\u0645\u061f <\/p>\n<p>\u0645\u0627 \u0646\u06cc\u0627\u0632 \u062f\u0627\u0631\u06cc\u0645 <code>egui::Context<\/code> \u0628\u0631\u0627\u06cc \u062f\u0631\u062e\u0648\u0627\u0633\u062a \u0631\u0646\u06af \u0622\u0645\u06cc\u0632\u06cc \u0645\u062c\u062f\u062f \u0631\u0627\u0628\u0637 \u06a9\u0627\u0631\u0628\u0631\u06cc \u06af\u0631\u0627\u0641\u06cc\u06a9\u06cc\u060c \u067e\u0633 \u0627\u0632 \u0627\u062a\u0645\u0627\u0645 \u0648\u0627\u06a9\u0634\u06cc \u062f\u0627\u062f\u0647 \u0647\u0627\u06cc \u062e\u0648\u062f. \u0627\u06cc\u0646 \u0645\u0639\u0627\u062f\u0644 \u0627\u06cc\u0646 \u0627\u0633\u062a \u06a9\u0647 \u0628\u0647 \u0631\u0634\u062a\u0647 \u0631\u0646\u062f\u0631 \u0627\u0637\u0644\u0627\u0639 \u062f\u0647\u06cc\u0645 \u06a9\u0647 \u062f\u0627\u062f\u0647 \u0647\u0627\u06cc \u062c\u062f\u06cc\u062f\u06cc \u062f\u0627\u0631\u06cc\u0645 \u0648 \u0628\u0631\u0627\u06cc \u0646\u0645\u0627\u06cc\u0634 \u0622\u0646 \u062f\u0627\u062f\u0647 \u0647\u0627 \u0628\u0627\u06cc\u062f \u062f\u0648\u0628\u0627\u0631\u0647 \u0631\u0646\u062f\u0631 \u0634\u0648\u062f. \u062f\u0631 \u063a\u06cc\u0631 \u0627\u06cc\u0646 \u0635\u0648\u0631\u062a\u060c \u0627\u06af\u0631 \u0647\u06cc\u0686 \u062a\u0639\u0627\u0645\u0644\u06cc \u0627\u062a\u0641\u0627\u0642 \u0646\u06cc\u0641\u062a\u0627\u062f\u060c \u0645\u0645\u06a9\u0646 \u0627\u0633\u062a \u0631\u0627\u0628\u0637 \u06a9\u0627\u0631\u0628\u0631\u06cc \u062b\u0627\u0628\u062a \u0628\u0645\u0627\u0646\u062f \u062a\u0627 \u0639\u0645\u0631 \u0628\u0627\u062a\u0631\u06cc \u062d\u0641\u0638 \u0634\u0648\u062f \u0648 \u062f\u0627\u062f\u0647\u200c\u0647\u0627\u06cc \u062c\u062f\u06cc\u062f \u0631\u0627 \u0646\u0634\u0627\u0646 \u0646\u062f\u0647\u062f. <\/p>\n<p>\u0627\u06cc\u0646 <code>PetKind<\/code> \u0635\u0631\u0641\u0627\u064b \u0628\u0631\u0627\u06cc \u0628\u0631\u0631\u0633\u06cc \u0627\u06cc\u0646 \u0627\u0633\u062a \u06a9\u0647 \u0622\u06cc\u0627 \u0645\u0627 \u06cc\u06a9 \u062a\u0635\u0648\u06cc\u0631 \u0628\u0631\u0627\u06cc \u06cc\u06a9 \u06af\u0631\u0628\u0647 \u06cc\u0627 \u06cc\u06a9 \u0633\u06af \u0648\u0627\u06a9\u0634\u06cc \u0645\u06cc \u06a9\u0646\u06cc\u0645 <code>Sender<event\/><\/code> \u0642\u0633\u0645\u062a \u0627\u0631\u0633\u0627\u0644 \u0627\u0644\u0641 \u0627\u0633\u062a <code>std::sync::mpsc<\/code> \u06a9\u0627\u0646\u0627\u0644\u060c \u06a9\u0647 \u0628\u0647 \u0645\u0627 \u0627\u0645\u06a9\u0627\u0646 \u0645\u06cc\u200c\u062f\u0647\u062f \u062f\u0627\u062f\u0647\u200c\u0647\u0627 \u0631\u0627 \u0628\u0647 \u0631\u0634\u062a\u0647 \u0631\u0646\u062f\u0631 \u0627\u0635\u0644\u06cc \u0627\u0631\u0633\u0627\u0644 \u06a9\u0646\u06cc\u0645\u060c \u06a9\u0647 \u0633\u067e\u0633 \u0645\u06cc\u200c\u062a\u0648\u0627\u0646 \u0622\u0646\u200c\u0647\u0627 \u0631\u0627 \u0627\u0632 \u0622\u0646\u062c\u0627 \u062f\u0631\u06cc\u0627\u0641\u062a \u0648 \u0645\u062f\u06cc\u0631\u06cc\u062a \u06a9\u0631\u062f. <\/p>\n<p>\u062f\u0631 \u0628\u062e\u0634 \u0628\u0639\u062f\u06cc \u0646\u06af\u0627\u0647\u06cc \u0628\u0647 \u0646\u062d\u0648\u0647 \u0639\u0645\u0644\u06a9\u0631\u062f \u0627\u06cc\u0646 \u0645\u06a9\u0627\u0646\u06cc\u0633\u0645 \u0645\u062f\u06cc\u0631\u06cc\u062a \u0631\u0648\u06cc\u062f\u0627\u062f \u062e\u0648\u0627\u0647\u06cc\u0645 \u062f\u0627\u0634\u062a.<\/p>\n<h2><span class=\"ez-toc-section\" id=\"%D8%B1%D8%B3%DB%8C%D8%AF%DA%AF%DB%8C_%D8%A8%D9%87_%D8%B1%D9%88%DB%8C%D8%AF%D8%A7%D8%AF\"><\/span>\n<p>  \u0631\u0633\u06cc\u062f\u06af\u06cc \u0628\u0647 \u0631\u0648\u06cc\u062f\u0627\u062f<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>\u0647\u0645\u0627\u0646\u0637\u0648\u0631 \u06a9\u0647 \u062f\u0631 \u0628\u0627\u0644\u0627 \u0630\u06a9\u0631 \u0634\u062f\u060c \u0645\u0627 \u0628\u0647 \u0631\u0627\u0647\u06cc \u0628\u0631\u0627\u06cc \u0648\u0627\u06a9\u0634\u06cc \u0646\u0627\u0647\u0645\u0632\u0645\u0627\u0646 \u062f\u0627\u062f\u0647 \u0647\u0627 \u0628\u062f\u0648\u0646 \u0645\u0633\u062f\u0648\u062f \u06a9\u0631\u062f\u0646 \u0631\u0634\u062a\u0647 \u0631\u0646\u062f\u0631 \u0627\u0635\u0644\u06cc \u0646\u06cc\u0627\u0632 \u062f\u0627\u0631\u06cc\u0645. \u0628\u0627 \u0627\u06cc\u0646 \u062d\u0627\u0644\u060c \u0645\u0627 \u0647\u0645\u0686\u0646\u06cc\u0646 \u0628\u0647 \u0631\u0627\u0647\u06cc \u0628\u0631\u0627\u06cc \u0628\u0631\u0642\u0631\u0627\u0631\u06cc \u0627\u0631\u062a\u0628\u0627\u0637 \u0628\u06cc\u0646 \u0627\u06cc\u0646 \u0631\u0634\u062a\u0647 \u067e\u0633\u200c\u0632\u0645\u06cc\u0646\u0647 \u0648 \u0645\u0648\u0636\u0648\u0639 \u0627\u0635\u0644\u06cc \u0646\u06cc\u0627\u0632 \u062f\u0627\u0631\u06cc\u0645. \u0628\u0631\u0627\u06cc \u0627\u06cc\u0646 \u0645\u0646\u0638\u0648\u0631 \u0627\u0632 \u062f\u0648 \u0645\u0648\u0631\u062f \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc \u06a9\u0646\u06cc\u0645 <code>std::sync::mpsc<\/code> \u06a9\u0627\u0646\u0627\u0644\u200c\u0647\u0627 &#8211; \u06cc\u06a9\u06cc \u0628\u0631\u0627\u06cc \u0627\u0631\u0633\u0627\u0644 \u0631\u0648\u06cc\u062f\u0627\u062f\u0647\u0627 \u0628\u0647 \u0631\u0634\u062a\u0647 \u067e\u0633\u200c\u0632\u0645\u06cc\u0646\u0647 \u0648 \u062f\u0631\u06cc\u0627\u0641\u062a \u0622\u0646\u200c\u0647\u0627 \u062f\u0631 \u0622\u0646\u062c\u0627\u060c \u0648 \u062f\u06cc\u06af\u0631\u06cc \u0628\u0631\u0627\u06cc \u0627\u0631\u0633\u0627\u0644 \u0645\u062c\u062f\u062f \u062f\u0627\u062f\u0647\u200c\u0647\u0627 \u0628\u0647 \u0631\u0634\u062a\u0647 \u0627\u0635\u0644\u06cc \u0648 \u062f\u0631\u06cc\u0627\u0641\u062a \u062f\u0627\u062f\u0647\u200c\u0647\u0627 \u062f\u0631 \u0622\u0646\u062c\u0627:<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight rust\"><code><span class=\"k\">fn<\/span> <span class=\"nf\">main<\/span><span class=\"p\">()<\/span> <span class=\"k\">-&gt;<\/span> <span class=\"nb\">Result<\/span><span class=\"o\"><span class=\"p\">()<\/span><span class=\"o\">&gt;<\/span> <span class=\"p\">{<\/span>\n    <span class=\"o\">...<\/span>\n    <span class=\"k\">let<\/span> <span class=\"p\">(<\/span><span class=\"n\">background_event_sender<\/span><span class=\"p\">,<\/span> <span class=\"n\">background_event_receiver<\/span><span class=\"p\">)<\/span> <span class=\"o\">=<\/span> <span class=\"nn\">channel<\/span><span class=\"p\">::();<\/span>\n    <span class=\"k\">let<\/span> <span class=\"p\">(<\/span><span class=\"n\">event_sender<\/span><span class=\"p\">,<\/span> <span class=\"n\">event_receiver<\/span><span class=\"p\">)<\/span> <span class=\"o\">=<\/span> <span class=\"nn\">channel<\/span><span class=\"p\">::();<\/span>\n    <span class=\"o\">...<\/span>\n    <span class=\"nn\">std<\/span><span class=\"p\">::<\/span><span class=\"nn\">thread<\/span><span class=\"p\">::<\/span><span class=\"nf\">spawn<\/span><span class=\"p\">(<\/span><span class=\"k\">move<\/span> <span class=\"p\">||<\/span> <span class=\"p\">{<\/span>\n        <span class=\"k\">while<\/span> <span class=\"k\">let<\/span> <span class=\"nf\">Ok<\/span><span class=\"p\">(<\/span><span class=\"n\">event<\/span><span class=\"p\">)<\/span> <span class=\"o\">=<\/span> <span class=\"n\">background_event_receiver<\/span><span class=\"nf\">.recv<\/span><span class=\"p\">()<\/span> <span class=\"p\">{<\/span>\n            <span class=\"k\">let<\/span> <span class=\"n\">sender<\/span> <span class=\"o\">=<\/span> <span class=\"n\">event_sender<\/span><span class=\"nf\">.clone<\/span><span class=\"p\">();<\/span>\n            <span class=\"nf\">handle_events<\/span><span class=\"p\">(<\/span><span class=\"n\">event<\/span><span class=\"p\">,<\/span> <span class=\"n\">sender<\/span><span class=\"p\">);<\/span>\n        <span class=\"p\">}<\/span>\n    <span class=\"p\">});<\/span>\n    <span class=\"o\">...<\/span>\n<span class=\"p\">}<\/span>\n<\/span><\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<p>\u062f\u0631 <code>main<\/code> \u062a\u0627\u0628\u0639\u060c \u0645\u0627 \u062f\u0648 \u06a9\u0627\u0646\u0627\u0644 \u0631\u0627 \u0627\u06cc\u062c\u0627\u062f \u0645\u06cc \u06a9\u0646\u06cc\u0645\u060c \u0647\u0631 \u06a9\u062f\u0627\u0645 \u0628\u0627 \u0622\u0646\u0647\u0627 <code>Sender<\/code> \u0648 <code>Receiver<\/code> \u0628\u0647 \u067e\u0627\u06cc\u0627\u0646 \u0645\u06cc \u0631\u0633\u062f. <\/p>\n<p>\u0633\u067e\u0633\u060c \u0645\u0627 \u06cc\u06a9 \u0631\u0634\u062a\u0647 \u062c\u062f\u06cc\u062f \u0627\u06cc\u062c\u0627\u062f \u0645\u06cc \u06a9\u0646\u06cc\u0645 &#8211; \u0631\u0634\u062a\u0647 \u067e\u0633 \u0632\u0645\u06cc\u0646\u0647 \u0645\u0627 &#8211; \u0648 \u062f\u0631 \u0622\u0646\u060c \u0645\u0646\u062a\u0638\u0631 \u0631\u0648\u06cc\u062f\u0627\u062f\u0647\u0627\u06cc\u06cc \u062f\u0631 <code>background_event_receiver<\/code> \u0648 \u0628\u0631\u0627\u06cc \u0647\u0631 \u0631\u0648\u06cc\u062f\u0627\u062f\u060c \u0631\u0648\u06cc\u062f\u0627\u062f \u0631\u0627 \u0645\u062f\u06cc\u0631\u06cc\u062a \u06a9\u0646\u06cc\u062f \u0648 \u062f\u0627\u062f\u0647 \u0647\u0627 \u0631\u0627 \u0628\u0627 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 \u0622\u0646 \u0628\u0647 \u0631\u0634\u062a\u0647 \u0627\u0635\u0644\u06cc \u0627\u0631\u0633\u0627\u0644 \u06a9\u0646\u06cc\u062f <code>event_sender<\/code>\u060c <code>Sender<\/code> \u0628\u062e\u0634\u06cc \u0627\u0632 \u06a9\u0627\u0646\u0627\u0644 \u062a\u0627\u067e\u06cc\u06a9 \u0627\u0635\u0644\u06cc <\/p>\n<p>\u062f\u0631 \u0645\u0631\u062d\u0644\u0647 \u0628\u0639\u062f\u060c \u0645\u0627 \u0631\u0627 \u062a\u0639\u0631\u06cc\u0641 \u0645\u06cc \u06a9\u0646\u06cc\u0645 <code>Event<\/code> type\u060c \u06a9\u0647 \u06cc\u06a9 enum \u0627\u0633\u062a \u06a9\u0647 \u0634\u0627\u0645\u0644 \u062a\u0645\u0627\u0645 \u0627\u0646\u0648\u0627\u0639 \u0631\u0648\u06cc\u062f\u0627\u062f\u0647\u0627\u06cc \u0645\u062e\u062a\u0644\u0641 \u0627\u0633\u062a \u06a9\u0647 \u062f\u0631 \u0628\u0631\u0646\u0627\u0645\u0647 \u0628\u0647 \u0622\u0646 \u0646\u06cc\u0627\u0632 \u062f\u0627\u0631\u06cc\u0645:<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight rust\"><code><span class=\"k\">enum<\/span> <span class=\"n\">Event<\/span> <span class=\"p\">{<\/span>\n    <span class=\"nf\">SetPets<\/span><span class=\"p\">(<\/span><span class=\"nb\">Vec<\/span><span class=\"p\">),<\/span>\n    <span class=\"nf\">GetPetImage<\/span><span class=\"p\">(<\/span><span class=\"nn\">egui<\/span><span class=\"p\">::<\/span><span class=\"n\">Context<\/span><span class=\"p\">,<\/span> <span class=\"n\">PetKind<\/span><span class=\"p\">),<\/span>\n    <span class=\"nf\">SetPetImage<\/span><span class=\"p\">(<\/span><span class=\"nb\">Option<\/span><span class=\"p\">),<\/span>\n    <span class=\"nf\">GetPetFromDB<\/span><span class=\"p\">(<\/span><span class=\"nn\">egui<\/span><span class=\"p\">::<\/span><span class=\"n\">Context<\/span><span class=\"p\">,<\/span> <span class=\"nb\">Arc<\/span><span class=\"o\"><span class=\"n\">Mutex<\/span><span class=\"o\">&gt;<\/span><span class=\"p\">,<\/span> <span class=\"nb\">i64<\/span><span class=\"p\">),<\/span>\n    <span class=\"nf\">SetSelectedPet<\/span><span class=\"p\">(<\/span><span class=\"nb\">Option<\/span><span class=\"p\">),<\/span>\n    <span class=\"nf\">InsertPetToDB<\/span><span class=\"p\">(<\/span><span class=\"nn\">egui<\/span><span class=\"p\">::<\/span><span class=\"n\">Context<\/span><span class=\"p\">,<\/span> <span class=\"nb\">Arc<\/span><span class=\"o\"><span class=\"n\">Mutex<\/span><span class=\"o\">&gt;<\/span><span class=\"p\">,<\/span> <span class=\"n\">Pet<\/span><span class=\"p\">),<\/span>\n    <span class=\"nf\">DeletePetFromDB<\/span><span class=\"p\">(<\/span><span class=\"nn\">egui<\/span><span class=\"p\">::<\/span><span class=\"n\">Context<\/span><span class=\"p\">,<\/span> <span class=\"nb\">Arc<\/span><span class=\"o\"><span class=\"n\">Mutex<\/span><span class=\"o\">&gt;<\/span><span class=\"p\">,<\/span> <span class=\"nb\">i64<\/span><span class=\"p\">),<\/span>\n<span class=\"p\">}<\/span>\n<\/span><\/span><\/span><\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<ul>\n<li>    SetPets &#8211; \u0644\u06cc\u0633\u062a \u062c\u062f\u06cc\u062f\u06cc \u0627\u0632 \u062d\u06cc\u0648\u0627\u0646\u0627\u062a \u062e\u0627\u0646\u06af\u06cc \u0648\u0627\u06a9\u0634\u06cc \u0634\u062f\u0647 \u0631\u0627 \u062f\u0631 AppState \u0628\u0631\u0646\u0627\u0645\u0647 \u062a\u0646\u0638\u06cc\u0645 \u0645\u06cc \u06a9\u0646\u062f<\/li>\n<li>    GetPetImage &#8211; \u06cc\u06a9 \u062a\u0635\u0648\u06cc\u0631 \u062a\u0635\u0627\u062f\u0641\u06cc \u062c\u062f\u06cc\u062f \u0628\u0631\u0627\u06cc \u06cc\u06a9 \u0646\u0648\u0639 \u0645\u0639\u06cc\u0646 \u0627\u0632 \u062d\u06cc\u0648\u0627\u0646 \u062e\u0627\u0646\u06af\u06cc \u062f\u0631\u06cc\u0627\u0641\u062a \u0645\u06cc \u06a9\u0646\u062f<\/li>\n<li>    SetPetImage &#8211; \u062a\u0635\u0648\u06cc\u0631 \u062d\u06cc\u0648\u0627\u0646 \u062e\u0627\u0646\u06af\u06cc \u0648\u0627\u06a9\u0634\u06cc \u0634\u062f\u0647 \u0631\u0627 \u062f\u0631 AppState \u062a\u0646\u0638\u06cc\u0645 \u0645\u06cc \u06a9\u0646\u062f<\/li>\n<li>    GetPetFromDB &#8211; \u06cc\u06a9 \u062d\u06cc\u0648\u0627\u0646 \u062e\u0627\u0646\u06af\u06cc \u0628\u0627 \u0634\u0646\u0627\u0633\u0647 \u062f\u0627\u062f\u0647 \u0634\u062f\u0647 (i64) \u0631\u0627 \u0627\u0632 \u067e\u0627\u06cc\u06af\u0627\u0647 \u062f\u0627\u062f\u0647 \u0648\u0627\u06a9\u0634\u06cc \u0645\u06cc \u06a9\u0646\u062f<\/li>\n<li>    SetSelectedPet \u2014 \u062d\u06cc\u0648\u0627\u0646 \u062e\u0627\u0646\u06af\u06cc \u0627\u0646\u062a\u062e\u0627\u0628 \u0634\u062f\u0647 \u0631\u0627 \u062f\u0631 AppState \u0628\u0631\u0646\u0627\u0645\u0647 \u062a\u0646\u0638\u06cc\u0645 \u0645\u06cc \u06a9\u0646\u062f<\/li>\n<li>    InsertPetToDB &#8211; \u06cc\u06a9 \u062d\u06cc\u0648\u0627\u0646 \u062e\u0627\u0646\u06af\u06cc \u062c\u062f\u06cc\u062f \u0628\u0647 \u067e\u0627\u06cc\u06af\u0627\u0647 \u062f\u0627\u062f\u0647 \u0627\u0636\u0627\u0641\u0647 \u0645\u06cc \u06a9\u0646\u062f<\/li>\n<li>    DeletePetFromDB &#8211; \u06cc\u06a9 \u062d\u06cc\u0648\u0627\u0646 \u062e\u0627\u0646\u06af\u06cc \u0631\u0627 \u0627\u0632 \u067e\u0627\u06cc\u06af\u0627\u0647 \u062f\u0627\u062f\u0647 \u062d\u0630\u0641 \u0645\u06cc \u06a9\u0646\u062f<\/li>\n<\/ul>\n<p>\u0633\u067e\u0633\u060c \u0645\u0627 \u0622\u0646 \u0631\u0627 \u0627\u062c\u0631\u0627 \u0645\u06cc \u06a9\u0646\u06cc\u0645 <code>handle_events<\/code> \u062a\u0627\u0628\u0639\u06cc \u06a9\u0647 \u062f\u0631 \u062f\u0627\u062e\u0644 \u0631\u0634\u062a\u0647 \u067e\u0633 \u0632\u0645\u06cc\u0646\u0647 \u0641\u0631\u0627\u062e\u0648\u0627\u0646\u06cc \u0645\u06cc \u0634\u0648\u062f:<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight rust\"><code><span class=\"k\">fn<\/span> <span class=\"nf\">handle_events<\/span><span class=\"p\">(<\/span><span class=\"n\">event<\/span><span class=\"p\">:<\/span> <span class=\"n\">Event<\/span><span class=\"p\">,<\/span> <span class=\"n\">sender<\/span><span class=\"p\">:<\/span> <span class=\"n\">Sender<\/span><span class=\"p\">)<\/span> <span class=\"p\">{<\/span>\n    <span class=\"k\">match<\/span> <span class=\"n\">event<\/span> <span class=\"p\">{<\/span>\n        <span class=\"nn\">Event<\/span><span class=\"p\">::<\/span><span class=\"nf\">GetPetImage<\/span><span class=\"p\">(<\/span><span class=\"n\">ctx<\/span><span class=\"p\">,<\/span> <span class=\"n\">pet_kind<\/span><span class=\"p\">)<\/span> <span class=\"k\">=&gt;<\/span> <span class=\"p\">{<\/span>\n            <span class=\"nf\">fetch_pet_image<\/span><span class=\"p\">(<\/span><span class=\"n\">ctx<\/span><span class=\"p\">,<\/span> <span class=\"n\">pet_kind<\/span><span class=\"p\">,<\/span> <span class=\"n\">sender<\/span><span class=\"p\">);<\/span>\n        <span class=\"p\">}<\/span>\n        <span class=\"nn\">Event<\/span><span class=\"p\">::<\/span><span class=\"nf\">GetPetFromDB<\/span><span class=\"p\">(<\/span><span class=\"n\">ctx<\/span><span class=\"p\">,<\/span> <span class=\"n\">db_con<\/span><span class=\"p\">,<\/span> <span class=\"n\">pet_id<\/span><span class=\"p\">)<\/span> <span class=\"k\">=&gt;<\/span> <span class=\"p\">{<\/span>\n            <span class=\"k\">if<\/span> <span class=\"k\">let<\/span> <span class=\"nf\">Ok<\/span><span class=\"p\">(<\/span><span class=\"nf\">Some<\/span><span class=\"p\">(<\/span><span class=\"n\">pet<\/span><span class=\"p\">))<\/span> <span class=\"o\">=<\/span> <span class=\"nf\">get_pet_from_db<\/span><span class=\"p\">(<\/span><span class=\"n\">db_con<\/span><span class=\"p\">,<\/span> <span class=\"n\">pet_id<\/span><span class=\"p\">)<\/span> <span class=\"p\">{<\/span>\n                <span class=\"k\">let<\/span> <span class=\"n\">_<\/span> <span class=\"o\">=<\/span> <span class=\"n\">sender<\/span><span class=\"nf\">.send<\/span><span class=\"p\">(<\/span><span class=\"nn\">Event<\/span><span class=\"p\">::<\/span><span class=\"nf\">SetSelectedPet<\/span><span class=\"p\">(<\/span><span class=\"nf\">Some<\/span><span class=\"p\">(<\/span><span class=\"n\">pet<\/span><span class=\"p\">)));<\/span>\n                <span class=\"n\">ctx<\/span><span class=\"nf\">.request_repaint<\/span><span class=\"p\">();<\/span>\n            <span class=\"p\">}<\/span>\n        <span class=\"p\">}<\/span>\n        <span class=\"nn\">Event<\/span><span class=\"p\">::<\/span><span class=\"nf\">DeletePetFromDB<\/span><span class=\"p\">(<\/span><span class=\"n\">ctx<\/span><span class=\"p\">,<\/span> <span class=\"n\">db_con<\/span><span class=\"p\">,<\/span> <span class=\"n\">pet_id<\/span><span class=\"p\">)<\/span> <span class=\"k\">=&gt;<\/span> <span class=\"p\">{<\/span>\n            <span class=\"k\">if<\/span> <span class=\"nf\">delete_pet_from_db<\/span><span class=\"p\">(<\/span><span class=\"n\">db_con<\/span><span class=\"nf\">.clone<\/span><span class=\"p\">(),<\/span> <span class=\"n\">pet_id<\/span><span class=\"p\">)<\/span><span class=\"nf\">.is_ok<\/span><span class=\"p\">()<\/span> <span class=\"p\">{<\/span>\n                <span class=\"k\">if<\/span> <span class=\"k\">let<\/span> <span class=\"nf\">Ok<\/span><span class=\"p\">(<\/span><span class=\"n\">pets<\/span><span class=\"p\">)<\/span> <span class=\"o\">=<\/span> <span class=\"nf\">get_pets_from_db<\/span><span class=\"p\">(<\/span><span class=\"n\">db_con<\/span><span class=\"p\">)<\/span> <span class=\"p\">{<\/span>\n                    <span class=\"k\">let<\/span> <span class=\"n\">_<\/span> <span class=\"o\">=<\/span> <span class=\"n\">sender<\/span><span class=\"nf\">.send<\/span><span class=\"p\">(<\/span><span class=\"nn\">Event<\/span><span class=\"p\">::<\/span><span class=\"nf\">SetPets<\/span><span class=\"p\">(<\/span><span class=\"n\">pets<\/span><span class=\"p\">));<\/span>\n                    <span class=\"n\">ctx<\/span><span class=\"nf\">.request_repaint<\/span><span class=\"p\">();<\/span>\n                <span class=\"p\">}<\/span>\n            <span class=\"p\">}<\/span>\n        <span class=\"p\">}<\/span>\n        <span class=\"nn\">Event<\/span><span class=\"p\">::<\/span><span class=\"nf\">InsertPetToDB<\/span><span class=\"p\">(<\/span><span class=\"n\">ctx<\/span><span class=\"p\">,<\/span> <span class=\"n\">db_con<\/span><span class=\"p\">,<\/span> <span class=\"n\">pet<\/span><span class=\"p\">)<\/span> <span class=\"k\">=&gt;<\/span> <span class=\"p\">{<\/span>\n            <span class=\"k\">if<\/span> <span class=\"k\">let<\/span> <span class=\"nf\">Ok<\/span><span class=\"p\">(<\/span><span class=\"n\">new_pet<\/span><span class=\"p\">)<\/span> <span class=\"o\">=<\/span> <span class=\"nf\">insert_pet_to_db<\/span><span class=\"p\">(<\/span><span class=\"n\">db_con<\/span><span class=\"nf\">.clone<\/span><span class=\"p\">(),<\/span> <span class=\"n\">pet<\/span><span class=\"p\">)<\/span> <span class=\"p\">{<\/span>\n                <span class=\"k\">if<\/span> <span class=\"k\">let<\/span> <span class=\"nf\">Ok<\/span><span class=\"p\">(<\/span><span class=\"n\">pets<\/span><span class=\"p\">)<\/span> <span class=\"o\">=<\/span> <span class=\"nf\">get_pets_from_db<\/span><span class=\"p\">(<\/span><span class=\"n\">db_con<\/span><span class=\"p\">)<\/span> <span class=\"p\">{<\/span>\n                    <span class=\"k\">let<\/span> <span class=\"n\">_<\/span> <span class=\"o\">=<\/span> <span class=\"n\">sender<\/span><span class=\"nf\">.send<\/span><span class=\"p\">(<\/span><span class=\"nn\">Event<\/span><span class=\"p\">::<\/span><span class=\"nf\">SetPets<\/span><span class=\"p\">(<\/span><span class=\"n\">pets<\/span><span class=\"p\">));<\/span>\n                    <span class=\"k\">let<\/span> <span class=\"n\">_<\/span> <span class=\"o\">=<\/span> <span class=\"n\">sender<\/span><span class=\"nf\">.send<\/span><span class=\"p\">(<\/span><span class=\"nn\">Event<\/span><span class=\"p\">::<\/span><span class=\"nf\">SetSelectedPet<\/span><span class=\"p\">(<\/span><span class=\"nf\">Some<\/span><span class=\"p\">(<\/span><span class=\"n\">new_pet<\/span><span class=\"p\">)));<\/span>\n                    <span class=\"n\">ctx<\/span><span class=\"nf\">.request_repaint<\/span><span class=\"p\">();<\/span>\n                <span class=\"p\">}<\/span>\n            <span class=\"p\">}<\/span>\n        <span class=\"p\">}<\/span>\n        <span class=\"n\">_<\/span> <span class=\"k\">=&gt;<\/span> <span class=\"p\">(),<\/span>\n    <span class=\"p\">}<\/span>\n<span class=\"p\">}<\/span>\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<p>\u0645\u0627 \u0628\u0627 \u0631\u0648\u06cc\u062f\u0627\u062f \u0648\u0631\u0648\u062f\u06cc \u0645\u0637\u0627\u0628\u0642\u062a \u0645\u06cc \u062f\u0647\u06cc\u0645\u060c \u062f\u0627\u062f\u0647 \u0647\u0627 \u0631\u0627 \u0648\u0627\u06a9\u0634\u06cc \u0645\u06cc \u06a9\u0646\u06cc\u0645\u060c \u062f\u0627\u062f\u0647 \u0647\u0627 \u0631\u0627 \u0628\u0627 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 \u0622\u0646 \u0627\u0631\u0633\u0627\u0644 \u0645\u06cc \u06a9\u0646\u06cc\u0645 <code>Sender<event\/><\/code>\u060c \u0648 \u062a\u0645\u0627\u0633 \u0628\u06af\u06cc\u0631\u06cc\u062f <code>ctx.request_repaint()<\/code> \u0628\u0631\u0627\u06cc \u0631\u0627\u0647 \u0627\u0646\u062f\u0627\u0632\u06cc \u0628\u0647 \u0631\u0648\u0632 \u0631\u0633\u0627\u0646\u06cc \u062c\u062f\u06cc\u062f \u062f\u0631 \u0645\u0648\u0636\u0648\u0639 \u0631\u0646\u062f\u0631. <\/p>\n<p>\u062f\u0631 \u0645\u0648\u0631\u062f \u062d\u0630\u0641 \u06cc\u06a9 \u062d\u06cc\u0648\u0627\u0646 \u062e\u0627\u0646\u06af\u06cc\u060c \u0644\u06cc\u0633\u062a \u062c\u062f\u06cc\u062f\u06cc \u0627\u0632 \u062d\u06cc\u0648\u0627\u0646\u0627\u062a \u062e\u0627\u0646\u06af\u06cc \u0631\u0627 \u0627\u0632 \u067e\u0627\u06cc\u06af\u0627\u0647 \u062f\u0627\u062f\u0647 \u062f\u0631\u06cc\u0627\u0641\u062a \u0645\u06cc \u06a9\u0646\u06cc\u0645\u060c \u0628\u0646\u0627\u0628\u0631\u0627\u06cc\u0646 \u062a\u063a\u06cc\u06cc\u0631 \u062f\u0631 \u0644\u06cc\u0633\u062a \u0646\u0645\u0627\u06cc\u0634 \u062f\u0627\u062f\u0647 \u0634\u062f\u0647 \u0645\u0646\u0639\u06a9\u0633 \u0645\u06cc \u0634\u0648\u062f. \u0628\u0631\u0627\u06cc \u0642\u0631\u0627\u0631 \u062f\u0627\u062f\u0646 \u062d\u06cc\u0648\u0627\u0646 \u062e\u0627\u0646\u06af\u06cc \u062c\u062f\u06cc\u062f \u0646\u06cc\u0632 \u0647\u0645\u06cc\u0646 \u06a9\u0627\u0631 \u0631\u0627 \u0627\u0646\u062c\u0627\u0645 \u0645\u06cc \u062f\u0647\u06cc\u0645 \u0648 \u0622\u0646 \u0631\u0627 \u0646\u06cc\u0632 \u062a\u0646\u0638\u06cc\u0645 \u0645\u06cc \u06a9\u0646\u06cc\u0645 <code>selected_pet<\/code> \u062f\u0631 AppState \u0628\u0647 \u062d\u06cc\u0648\u0627\u0646 \u062e\u0627\u0646\u06af\u06cc \u062a\u0627\u0632\u0647 \u0627\u06cc\u062c\u0627\u062f \u0634\u062f\u0647\u060c \u0627\u0632 \u0627\u06cc\u0646 \u0631\u0648 \u062f\u0631 \u0647\u0646\u06af\u0627\u0645 \u0627\u06cc\u062c\u0627\u062f \u0628\u0647 \u0622\u0646 \u067e\u06cc\u0645\u0627\u06cc\u0634 \u06a9\u0646\u06cc\u062f. <\/p>\n<p>\u0627\u06cc\u0646 \u0646\u06cc\u0645\u06cc \u0627\u0632 \u0645\u0646\u0637\u0642 \u0645\u062f\u06cc\u0631\u06cc\u062a \u0631\u0648\u06cc\u062f\u0627\u062f \u0627\u0633\u062a\u060c \u0645\u0646\u0637\u0642\u06cc \u06a9\u0647 \u062f\u0631 \u0631\u0634\u062a\u0647 \u067e\u0633\u200c\u0632\u0645\u06cc\u0646\u0647 \u0627\u0633\u062a. \u0627\u0645\u0627 \u0628\u0627\u06cc\u062f \u06cc\u06a9 \u0647\u0645\u062a\u0627 \u062f\u0631 \u0631\u0634\u062a\u0647 \u0631\u0646\u062f\u0631 \u0648\u062c\u0648\u062f \u062f\u0627\u0634\u062a\u0647 \u0628\u0627\u0634\u062f \u06a9\u0647 \u06a9\u0627\u0646\u0627\u0644 \u0631\u0627 \u0628\u0631\u0627\u06cc \u062f\u0627\u062f\u0647 \u0647\u0627\u06cc \u0627\u0631\u0633\u0627\u0644 \u0634\u062f\u0647 \u0627\u0632 \u0631\u0634\u062a\u0647 \u067e\u0633 \u0632\u0645\u06cc\u0646\u0647 \u0628\u0631\u0631\u0633\u06cc \u0645\u06cc \u06a9\u0646\u062f\u060c \u06a9\u0647 \u0633\u067e\u0633 \u0628\u0647 AppState \u0627\u0639\u0645\u0627\u0644 \u0645\u06cc \u0634\u0648\u062f\u060c \u06a9\u0647 \u0628\u0647 \u0646\u0648\u0628\u0647 \u062e\u0648\u062f \u0645\u0646\u062c\u0631 \u0628\u0647 \u0628\u0647 \u0631\u0648\u0632 \u0631\u0633\u0627\u0646\u06cc \u0631\u0627\u0628\u0637 \u06a9\u0627\u0631\u0628\u0631\u06cc \u06af\u0631\u0627\u0641\u06cc\u06a9\u06cc \u0645\u06cc \u0634\u0648\u062f. <\/p>\n<p>\u0627\u06cc\u0646 \u0642\u0633\u0645\u062a \u062f\u0631 <code>handle_gui_events<\/code> \u062f\u0631 \u062f\u0627\u062e\u0644 <code>PetApp<\/code> \u0646\u0648\u0639\u060c \u06a9\u0647 \u062f\u0631 \u0628\u062e\u0634 \u0628\u0639\u062f\u06cc \u0648 \u0622\u062e\u0631 \u0628\u0627 \u0622\u0646 \u0622\u0634\u0646\u0627 \u062e\u0648\u0627\u0647\u06cc\u0645 \u0634\u062f:<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight rust\"><code>    <span class=\"k\">fn<\/span> <span class=\"nf\">handle_gui_events<\/span><span class=\"p\">(<\/span><span class=\"o\">&amp;<\/span><span class=\"k\">mut<\/span> <span class=\"k\">self<\/span><span class=\"p\">)<\/span> <span class=\"p\">{<\/span>\n        <span class=\"k\">while<\/span> <span class=\"k\">let<\/span> <span class=\"nf\">Ok<\/span><span class=\"p\">(<\/span><span class=\"n\">event<\/span><span class=\"p\">)<\/span> <span class=\"o\">=<\/span> <span class=\"k\">self<\/span><span class=\"py\">.event_receiver<\/span><span class=\"nf\">.try_recv<\/span><span class=\"p\">()<\/span> <span class=\"p\">{<\/span>\n            <span class=\"k\">match<\/span> <span class=\"n\">event<\/span> <span class=\"p\">{<\/span>\n                <span class=\"nn\">Event<\/span><span class=\"p\">::<\/span><span class=\"nf\">SetPetImage<\/span><span class=\"p\">(<\/span><span class=\"n\">pet_image<\/span><span class=\"p\">)<\/span> <span class=\"k\">=&gt;<\/span> <span class=\"p\">{<\/span>\n                    <span class=\"k\">self<\/span><span class=\"py\">.app_state.pet_image<\/span> <span class=\"o\">=<\/span> <span class=\"n\">pet_image<\/span><span class=\"p\">;<\/span>\n                <span class=\"p\">}<\/span>\n                <span class=\"nn\">Event<\/span><span class=\"p\">::<\/span><span class=\"nf\">SetSelectedPet<\/span><span class=\"p\">(<\/span><span class=\"n\">pet<\/span><span class=\"p\">)<\/span> <span class=\"k\">=&gt;<\/span> <span class=\"k\">self<\/span><span class=\"py\">.app_state.selected_pet<\/span> <span class=\"o\">=<\/span> <span class=\"n\">pet<\/span><span class=\"p\">,<\/span>\n                <span class=\"nn\">Event<\/span><span class=\"p\">::<\/span><span class=\"nf\">SetPets<\/span><span class=\"p\">(<\/span><span class=\"n\">pets<\/span><span class=\"p\">)<\/span> <span class=\"k\">=&gt;<\/span> <span class=\"p\">{<\/span>\n                    <span class=\"k\">if<\/span> <span class=\"k\">let<\/span> <span class=\"nf\">Some<\/span><span class=\"p\">(<\/span><span class=\"k\">ref<\/span> <span class=\"n\">selected_pet<\/span><span class=\"p\">)<\/span> <span class=\"o\">=<\/span> <span class=\"k\">self<\/span><span class=\"py\">.app_state.selected_pet<\/span> <span class=\"p\">{<\/span>\n                        <span class=\"k\">if<\/span> <span class=\"o\">!<\/span><span class=\"n\">pets<\/span><span class=\"nf\">.iter<\/span><span class=\"p\">()<\/span><span class=\"nf\">.any<\/span><span class=\"p\">(|<\/span><span class=\"n\">p<\/span><span class=\"p\">|<\/span> <span class=\"n\">p<\/span><span class=\"py\">.id<\/span> <span class=\"o\">==<\/span> <span class=\"n\">selected_pet<\/span><span class=\"py\">.id<\/span><span class=\"p\">)<\/span> <span class=\"p\">{<\/span>\n                            <span class=\"k\">self<\/span><span class=\"py\">.app_state.selected_pet<\/span> <span class=\"o\">=<\/span> <span class=\"nb\">None<\/span><span class=\"p\">;<\/span>\n                        <span class=\"p\">}<\/span>\n                    <span class=\"p\">}<\/span>\n                    <span class=\"k\">self<\/span><span class=\"py\">.app_state.pets<\/span> <span class=\"o\">=<\/span> <span class=\"n\">pets<\/span><span class=\"p\">;<\/span>\n                <span class=\"p\">}<\/span>\n                <span class=\"n\">_<\/span> <span class=\"k\">=&gt;<\/span> <span class=\"p\">(),<\/span>\n            <span class=\"p\">};<\/span>\n        <span class=\"p\">}<\/span>\n    <span class=\"p\">}<\/span>\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<p>\u062f\u0648\u0628\u0627\u0631\u0647\u060c \u0645\u0627 \u0631\u0648\u06cc \u0647\u0645\u0647 \u0631\u0648\u06cc\u062f\u0627\u062f\u0647\u0627\u06cc \u062f\u0631\u06cc\u0627\u0641\u062a\u06cc \u062a\u06a9\u0631\u0627\u0631 \u0645\u06cc \u06a9\u0646\u06cc\u0645 \u0648 \u0628\u0627 \u0622\u0646\u0647\u0627 \u0645\u0637\u0627\u0628\u0642\u062a \u0645\u06cc \u06a9\u0646\u06cc\u0645. \u0628\u0631\u0627\u06cc \u0647\u0631 \u0631\u0648\u06cc\u062f\u0627\u062f\u060c \u0645\u0627 AppState \u0631\u0627 \u0628\u0647 \u0631\u0648\u0632 \u0645\u06cc \u06a9\u0646\u06cc\u0645. \u062c\u0627\u0644\u0628 \u062a\u0631\u06cc\u0646 \u067e\u06cc\u0627\u062f\u0647 \u0633\u0627\u0632\u06cc \u062f\u0631 \u0627\u0633\u062a <code>SetPets<\/code>\u060c \u06a9\u0647 \u062f\u0631 \u0622\u0646\u060c \u0627\u06af\u0631 \u062d\u06cc\u0648\u0627\u0646 \u062e\u0627\u0646\u06af\u06cc \u0627\u0646\u062a\u062e\u0627\u0628 \u0634\u062f\u0647 \u0642\u0628\u0644\u06cc \u062f\u06cc\u06af\u0631 \u0628\u062e\u0634\u06cc \u0627\u0632 \u0644\u06cc\u0633\u062a \u0628\u0647 \u0631\u0648\u0632 \u0634\u062f\u0647 \u0646\u0628\u0627\u0634\u062f\u060c \u062d\u06cc\u0648\u0627\u0646 \u062e\u0627\u0646\u06af\u06cc \u0627\u0646\u062a\u062e\u0627\u0628 \u0634\u062f\u0647 \u0631\u0627 \u0628\u0627\u0632\u0646\u0634\u0627\u0646\u06cc \u0645\u06cc \u06a9\u0646\u06cc\u0645. \u0627\u06cc\u0646 \u0645\u0648\u0636\u0648\u0639 \u0645\u0631\u062a\u0628\u0637 \u0627\u0633\u062a \u0632\u06cc\u0631\u0627 \u0627\u06af\u0631 \u062d\u06cc\u0648\u0627\u0646 \u062e\u0627\u0646\u06af\u06cc \u0631\u0627 \u062d\u0630\u0641 \u06a9\u0646\u06cc\u0645 \u0648 \u0627\u06cc\u0646 \u06a9\u0627\u0631 \u0631\u0627 \u0627\u0646\u062c\u0627\u0645 \u0646\u062f\u0647\u06cc\u0645\u060c \u0646\u0645\u0627\u06cc \u062c\u0632\u0626\u06cc\u0627\u062a \u0647\u0645\u0686\u0646\u0627\u0646 \u062d\u06cc\u0648\u0627\u0646 \u062e\u0627\u0646\u06af\u06cc \u062d\u0630\u0641 \u0634\u062f\u0647 \u0631\u0627 \u0646\u0634\u0627\u0646 \u0645\u06cc \u062f\u0647\u062f. <\/p>\n<p>\u062e\u0648\u0628\u060c \u0627\u06a9\u0646\u0648\u0646 \u0645\u062f\u0644 \u062f\u0627\u062f\u0647\u060c \u0645\u0646\u0637\u0642 \u0648\u0627\u06a9\u0634\u06cc \u062a\u0635\u0648\u06cc\u0631 \u0648 \u0645\u06a9\u0627\u0646\u06cc\u0633\u0645 \u0645\u062f\u06cc\u0631\u06cc\u062a \u0631\u0648\u06cc\u062f\u0627\u062f \u0631\u0627 \u062f\u0627\u0631\u06cc\u0645\u060c \u0648 \u062f\u0631 \u0646\u0647\u0627\u06cc\u062a \u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u06cc\u0645 \u0647\u0645\u0647 \u0686\u06cc\u0632 \u0631\u0627 \u0633\u06cc\u0645\u200c\u06a9\u0634\u06cc \u06a9\u0646\u06cc\u0645 \u0648 \u0631\u0627\u0628\u0637 \u06a9\u0627\u0631\u0628\u0631\u06cc \u06af\u0631\u0627\u0641\u06cc\u06a9\u06cc \u062e\u0648\u062f \u0631\u0627 \u0628\u0633\u0627\u0632\u06cc\u0645.<\/p>\n<h2><span class=\"ez-toc-section\" id=\"%D8%B3%D8%A7%D8%AE%D8%AA_%D8%B1%D8%A7%D8%A8%D8%B7_%DA%A9%D8%A7%D8%B1%D8%A8%D8%B1%DB%8C_%DA%AF%D8%B1%D8%A7%D9%81%DB%8C%DA%A9%DB%8C\"><\/span>\n<p>  \u0633\u0627\u062e\u062a \u0631\u0627\u0628\u0637 \u06a9\u0627\u0631\u0628\u0631\u06cc \u06af\u0631\u0627\u0641\u06cc\u06a9\u06cc<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>\u0633\u0627\u062e\u062a\u0627\u0631 \u0631\u0627\u0628\u0637 \u06a9\u0627\u0631\u0628\u0631\u06cc \u0628\u0647 \u06af\u0648\u0646\u0647 \u0627\u06cc \u0627\u0633\u062a \u06a9\u0647 \u062f\u0631 \u0633\u0645\u062a \u0686\u067e \u067e\u0646\u0644 \u0644\u06cc\u0633\u062a\u06cc \u0648\u062c\u0648\u062f \u062f\u0627\u0631\u062f \u06a9\u0647 \u062f\u06a9\u0645\u0647 \u0627\u0641\u0632\u0648\u062f\u0646 \u062d\u06cc\u0648\u0627\u0646 \u062e\u0627\u0646\u06af\u06cc \u062c\u062f\u06cc\u062f \u0648 \u0647\u0645\u0686\u0646\u06cc\u0646 \u0641\u0631\u0645\u06cc \u0628\u0631\u0627\u06cc \u0627\u0641\u0632\u0648\u062f\u0646 \u062d\u06cc\u0648\u0627\u0646\u0627\u062a \u062e\u0627\u0646\u06af\u06cc \u062c\u062f\u06cc\u062f \u0631\u0627 \u0646\u06af\u0647 \u0645\u06cc \u062f\u0627\u0631\u062f. \u0628\u0627 \u06a9\u0644\u06cc\u06a9 \u0628\u0631 \u0631\u0648\u06cc \u06cc\u06a9 \u062d\u06cc\u0648\u0627\u0646 \u062e\u0627\u0646\u06af\u06cc \u062f\u0631 \u0644\u06cc\u0633\u062a\u060c \u062c\u0632\u0626\u06cc\u0627\u062a \u0622\u0646 \u062d\u06cc\u0648\u0627\u0646 \u062e\u0627\u0646\u06af\u06cc \u0648 \u06cc\u06a9 \u062a\u0635\u0648\u06cc\u0631 \u062a\u0635\u0627\u062f\u0641\u06cc \u0628\u0631\u0627\u06cc \u062d\u06cc\u0648\u0627\u0646 \u062e\u0627\u0646\u06af\u06cc \u062f\u0631 \u067e\u0646\u0644 \u062c\u0632\u0626\u06cc\u0627\u062a \u062f\u0631 \u0633\u0645\u062a \u0631\u0627\u0633\u062a UI \u0646\u0634\u0627\u0646 \u062f\u0627\u062f\u0647 \u0645\u06cc \u0634\u0648\u062f. <\/p>\n<p>\u062f\u0631 \u067e\u0627\u06cc\u0627\u0646\u060c \u0628\u0627\u06cc\u062f \u062a\u0642\u0631\u06cc\u0628\u0627\u064b \u0634\u0628\u06cc\u0647 \u0628\u0647 \u0627\u06cc\u0646 \u0628\u0627\u0634\u062f: <\/p>\n<p>\u0628\u06cc\u0627\u06cc\u06cc\u062f \u0628\u0627 \u0627\u0646\u0648\u0627\u0639 \u062f\u0627\u062f\u0647 \u0647\u0627\u06cc\u06cc \u06a9\u0647 \u0646\u06cc\u0627\u0632 \u062f\u0627\u0631\u06cc\u0645 \u0634\u0631\u0648\u0639 \u06a9\u0646\u06cc\u0645:<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight rust\"><code><span class=\"k\">struct<\/span> <span class=\"n\">PetApp<\/span> <span class=\"p\">{<\/span>\n    <span class=\"n\">app_state<\/span><span class=\"p\">:<\/span> <span class=\"n\">AppState<\/span><span class=\"p\">,<\/span>\n    <span class=\"n\">background_event_sender<\/span><span class=\"p\">:<\/span> <span class=\"n\">Sender<\/span><span class=\"p\">,<\/span>\n    <span class=\"n\">event_receiver<\/span><span class=\"p\">:<\/span> <span class=\"n\">Receiver<\/span><span class=\"p\">,<\/span>\n    <span class=\"n\">db_con<\/span><span class=\"p\">:<\/span> <span class=\"nb\">Arc<\/span><span class=\"o\"><span class=\"n\">Mutex<\/span><span class=\"o\">&gt;<\/span><span class=\"p\">,<\/span>\n<span class=\"p\">}<\/span>\n\n<span class=\"nd\">#[derive(Debug,<\/span> <span class=\"nd\">Clone)]<\/span>\n<span class=\"k\">struct<\/span> <span class=\"n\">AppState<\/span> <span class=\"p\">{<\/span>\n    <span class=\"n\">selected_pet<\/span><span class=\"p\">:<\/span> <span class=\"nb\">Option<\/span><span class=\"p\">,<\/span>\n    <span class=\"n\">pets<\/span><span class=\"p\">:<\/span> <span class=\"nb\">Vec<\/span><span class=\"p\">,<\/span>\n    <span class=\"n\">pet_image<\/span><span class=\"p\">:<\/span> <span class=\"nb\">Option<\/span><span class=\"p\">,<\/span>\n    <span class=\"n\">add_form<\/span><span class=\"p\">:<\/span> <span class=\"n\">AddForm<\/span><span class=\"p\">,<\/span>\n<span class=\"p\">}<\/span>\n\n<span class=\"nd\">#[derive(Debug,<\/span> <span class=\"nd\">Clone)]<\/span>\n<span class=\"k\">struct<\/span> <span class=\"n\">AddForm<\/span> <span class=\"p\">{<\/span>\n    <span class=\"n\">show<\/span><span class=\"p\">:<\/span> <span class=\"nb\">bool<\/span><span class=\"p\">,<\/span>\n    <span class=\"n\">name<\/span><span class=\"p\">:<\/span> <span class=\"nb\">String<\/span><span class=\"p\">,<\/span>\n    <span class=\"n\">age<\/span><span class=\"p\">:<\/span> <span class=\"nb\">String<\/span><span class=\"p\">,<\/span>\n    <span class=\"n\">kind<\/span><span class=\"p\">:<\/span> <span class=\"nb\">String<\/span><span class=\"p\">,<\/span>\n<span class=\"p\">}<\/span>\n<\/span><\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<p>\u0631\u0627 \u062a\u0639\u0631\u06cc\u0641 \u0645\u06cc \u06a9\u0646\u06cc\u0645 <code>PetApp<\/code>\u060c \u06a9\u0647 \u0633\u0627\u062e\u062a\u0627\u0631\u06cc \u0627\u0633\u062a \u06a9\u0647 \u062a\u0645\u0627\u0645 \u062f\u0627\u062f\u0647 \u0647\u0627\u06cc \u0628\u0631\u0646\u0627\u0645\u0647 \u0631\u0627 \u062f\u0631 \u062e\u0648\u062f \u0646\u06af\u0647 \u0645\u06cc \u062f\u0627\u0631\u062f. \u0646\u06af\u0647 \u0645\u06cc \u062f\u0627\u0631\u062f <code>AppState<\/code>\u060c \u06a9\u0647 \u0646\u0645\u0627\u06cc\u0634\u06cc \u0627\u0632 \u0648\u0636\u0639\u06cc\u062a \u0641\u0639\u0644\u06cc \u0628\u0631\u0646\u0627\u0645\u0647 \u0627\u0633\u062a\u060c \u0628\u0647 \u0639\u0646\u0648\u0627\u0646 \u0645\u062b\u0627\u0644\u060c \u06a9\u062f\u0627\u0645 \u062d\u06cc\u0648\u0627\u0646\u0627\u062a \u062e\u0627\u0646\u06af\u06cc \u0641\u0647\u0631\u0633\u062a \u0634\u062f\u0647 \u0627\u0646\u062f\u060c \u06a9\u062f\u0627\u0645 \u06cc\u06a9 \u0627\u0646\u062a\u062e\u0627\u0628 \u0634\u062f\u0647 \u0627\u0633\u062a \u0648 \u063a\u06cc\u0631\u0647\u060c \u0648 \u0647\u0645\u0686\u0646\u06cc\u0646 <code>AddForm<\/code> \u062d\u0627\u0644\u062a\u060c \u06a9\u0647 \u0646\u0634\u0627\u0646 \u062f\u0647\u0646\u062f\u0647 \u0648\u0636\u0639\u06cc\u062a \u0641\u0639\u0644\u06cc \u0641\u0631\u0645 \u0628\u0631\u0627\u06cc \u0627\u0636\u0627\u0641\u0647 \u06a9\u0631\u062f\u0646 \u06cc\u06a9 \u062d\u06cc\u0648\u0627\u0646 \u062e\u0627\u0646\u06af\u06cc \u062c\u062f\u06cc\u062f \u0627\u0633\u062a. <\/p>\n<p><code>PetApp<\/code>  \u0647\u0645\u0686\u0646\u06cc\u0646 \u0634\u0627\u0645\u0644 \u0627\u062a\u0635\u0627\u0644 \u067e\u0627\u06cc\u06af\u0627\u0647 \u062f\u0627\u062f\u0647 \u0645\u0634\u062a\u0631\u06a9\u060c \u0627\u0646\u062a\u0647\u0627\u06cc \u0641\u0631\u0633\u062a\u0646\u062f\u0647 \u0628\u0631\u0627\u06cc \u0631\u0634\u062a\u0647 \u067e\u0633\u200c\u0632\u0645\u06cc\u0646\u0647\u060c \u0648 \u0647\u0645\u0686\u0646\u06cc\u0646 \u0627\u0646\u062a\u0647\u0627\u06cc \u06af\u06cc\u0631\u0646\u062f\u0647 \u0628\u0631\u0627\u06cc \u06a9\u0627\u0646\u0627\u0644 \u0631\u0648\u06cc\u062f\u0627\u062f \u0628\u0631\u0627\u06cc \u0631\u0634\u062a\u0647 \u0631\u0646\u062f\u0631 \u0627\u0633\u062a\u060c \u0628\u0646\u0627\u0628\u0631\u0627\u06cc\u0646 \u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u06cc\u0645 \u0645\u06a9\u0627\u0646\u06cc\u0632\u0645 \u0645\u062f\u06cc\u0631\u06cc\u062a \u0631\u0648\u06cc\u062f\u0627\u062f \u0631\u0627 \u06a9\u0647 \u062f\u0631 \u0628\u0627\u0644\u0627 \u067e\u06cc\u0627\u062f\u0647\u200c\u0633\u0627\u0632\u06cc \u06a9\u0631\u062f\u06cc\u0645\u060c \u0627\u062c\u0631\u0627 \u06a9\u0646\u06cc\u0645. <\/p>\n<p>\u062f\u0631 \u0645\u0631\u062d\u0644\u0647 \u0628\u0639\u062f\u060c \u0645\u0627 \u0631\u0627 \u0627\u062c\u0631\u0627 \u0645\u06cc \u06a9\u0646\u06cc\u0645 <code>PetApp::new<\/code> \u0631\u0648\u0634\u060c \u0628\u0646\u0627\u0628\u0631\u0627\u06cc\u0646 \u0645\u0627 \u0645\u06cc \u062a\u0648\u0627\u0646\u06cc\u0645 \u0628\u0631\u0646\u0627\u0645\u0647 \u062e\u0648\u062f \u0631\u0627 \u0645\u0642\u062f\u0627\u0631\u062f\u0647\u06cc \u0627\u0648\u0644\u06cc\u0647 \u06a9\u0646\u06cc\u0645:<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight rust\"><code><span class=\"k\">impl<\/span> <span class=\"n\">PetApp<\/span> <span class=\"p\">{<\/span>\n    <span class=\"k\">fn<\/span> <span class=\"nf\">new<\/span><span class=\"p\">(<\/span>\n        <span class=\"n\">background_event_sender<\/span><span class=\"p\">:<\/span> <span class=\"n\">Sender<\/span><span class=\"p\">,<\/span>\n        <span class=\"n\">event_receiver<\/span><span class=\"p\">:<\/span> <span class=\"n\">Receiver<\/span><span class=\"p\">,<\/span>\n        <span class=\"n\">db_con<\/span><span class=\"p\">:<\/span> <span class=\"nn\">sqlite<\/span><span class=\"p\">::<\/span><span class=\"n\">Connection<\/span><span class=\"p\">,<\/span>\n    <span class=\"p\">)<\/span> <span class=\"k\">-&gt;<\/span> <span class=\"nb\">Result<\/span><span class=\"o\"><span class=\"nb\">Box<\/span><span class=\"o\">&gt;<\/span> <span class=\"p\">{<\/span>\n        <span class=\"k\">let<\/span> <span class=\"n\">db_con<\/span> <span class=\"o\">=<\/span> <span class=\"nn\">Arc<\/span><span class=\"p\">::<\/span><span class=\"nf\">new<\/span><span class=\"p\">(<\/span><span class=\"nn\">Mutex<\/span><span class=\"p\">::<\/span><span class=\"nf\">new<\/span><span class=\"p\">(<\/span><span class=\"n\">db_con<\/span><span class=\"p\">));<\/span>\n        <span class=\"k\">let<\/span> <span class=\"n\">pets<\/span> <span class=\"o\">=<\/span> <span class=\"nf\">get_pets_from_db<\/span><span class=\"p\">(<\/span><span class=\"n\">db_con<\/span><span class=\"nf\">.clone<\/span><span class=\"p\">())<\/span><span class=\"o\">?<\/span><span class=\"p\">;<\/span>\n        <span class=\"nf\">Ok<\/span><span class=\"p\">(<\/span><span class=\"nn\">Box<\/span><span class=\"p\">::<\/span><span class=\"nf\">new<\/span><span class=\"p\">(<\/span><span class=\"k\">Self<\/span> <span class=\"p\">{<\/span>\n            <span class=\"n\">app_state<\/span><span class=\"p\">:<\/span> <span class=\"n\">AppState<\/span> <span class=\"p\">{<\/span>\n                <span class=\"n\">selected_pet<\/span><span class=\"p\">:<\/span> <span class=\"nb\">None<\/span><span class=\"p\">,<\/span>\n                <span class=\"n\">pets<\/span><span class=\"p\">,<\/span>\n                <span class=\"n\">pet_image<\/span><span class=\"p\">:<\/span> <span class=\"nb\">None<\/span><span class=\"p\">,<\/span>\n                <span class=\"n\">add_form<\/span><span class=\"p\">:<\/span> <span class=\"n\">AddForm<\/span> <span class=\"p\">{<\/span>\n                    <span class=\"n\">show<\/span><span class=\"p\">:<\/span> <span class=\"k\">false<\/span><span class=\"p\">,<\/span>\n                    <span class=\"n\">name<\/span><span class=\"p\">:<\/span> <span class=\"nn\">String<\/span><span class=\"p\">::<\/span><span class=\"nf\">default<\/span><span class=\"p\">(),<\/span>\n                    <span class=\"n\">age<\/span><span class=\"p\">:<\/span> <span class=\"nn\">String<\/span><span class=\"p\">::<\/span><span class=\"nf\">default<\/span><span class=\"p\">(),<\/span>\n                    <span class=\"n\">kind<\/span><span class=\"p\">:<\/span> <span class=\"nn\">String<\/span><span class=\"p\">::<\/span><span class=\"nf\">default<\/span><span class=\"p\">(),<\/span>\n                <span class=\"p\">},<\/span>\n            <span class=\"p\">},<\/span>\n            <span class=\"n\">background_event_sender<\/span><span class=\"p\">,<\/span>\n            <span class=\"n\">event_receiver<\/span><span class=\"p\">,<\/span>\n            <span class=\"n\">db_con<\/span><span class=\"p\">,<\/span>\n        <span class=\"p\">}))<\/span>\n    <span class=\"p\">}<\/span>\n<span class=\"p\">}<\/span>\n<\/span><\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<p>\u0648\u0631\u0648\u062f\u06cc \u0631\u0627 \u0628\u0633\u062a\u0647 \u0628\u0646\u062f\u06cc \u0645\u06cc \u06a9\u0646\u06cc\u0645 <code>sqlite::Connection<\/code> \u062f\u0627\u062e\u0644 \u06cc\u06a9 <code>Arc<mutex>&gt;<\/mutex><\/code> \u0628\u0646\u0627\u0628\u0631\u0627\u06cc\u0646 \u0645\u06cc \u062a\u0648\u0627\u0646\u06cc\u0645 \u0628\u0627 \u062e\u06cc\u0627\u0644 \u0631\u0627\u062d\u062a \u0622\u0646 \u0631\u0627 \u062f\u0631 \u0633\u0631\u0627\u0633\u0631 \u0631\u0634\u062a\u0647 \u0647\u0627 \u0628\u0647 \u0627\u0634\u062a\u0631\u0627\u06a9 \u0628\u06af\u0630\u0627\u0631\u06cc\u0645 \u0648 \u0644\u06cc\u0633\u062a \u0627\u0648\u0644\u06cc\u0647 \u062d\u06cc\u0648\u0627\u0646\u0627\u062a \u062e\u0627\u0646\u06af\u06cc \u0631\u0627 \u0648\u0627\u06a9\u0634\u06cc \u06a9\u0646\u06cc\u0645 \u0648 \u0622\u0646 \u0631\u0627 \u062f\u0631 AppState \u062a\u0646\u0638\u06cc\u0645 \u06a9\u0646\u06cc\u0645. \u0628\u0642\u06cc\u0647 \u062d\u0627\u0644\u062a \u0628\u0647 \u0633\u0627\u062f\u06af\u06cc \u0628\u0647 \u06cc\u06a9 \u067e\u06cc\u0634 \u0641\u0631\u0636 \u0627\u06cc\u0645\u0646 \u0645\u0642\u062f\u0627\u0631\u062f\u0647\u06cc \u0627\u0648\u0644\u06cc\u0647 \u0645\u06cc \u0634\u0648\u062f. <\/p>\n<p>\u0628\u0631\u0645\u06cc \u06af\u0631\u062f\u06cc\u0645 a <code>Result<box>&gt;<\/box><\/code> \u0627\u0632 \u0622\u0646\u062c\u0627\u06cc\u06cc \u06a9\u0647 \u0622\u0646 \u0686\u06cc\u0632\u06cc \u0627\u0633\u062a <code>eframe<\/code> \u0627\u0646\u062a\u0638\u0627\u0631 \u0645\u06cc \u0631\u0648\u062f \u0647\u0646\u06af\u0627\u0645 \u0627\u06cc\u062c\u0627\u062f \u06cc\u06a9 \u0628\u0631\u0646\u0627\u0645\u0647 \u0628\u0648\u0645\u06cc \u062c\u062f\u06cc\u062f\u060c \u06a9\u0647 \u062f\u0631 \u0627\u062f\u0627\u0645\u0647 \u0628\u0647 \u0628\u0631\u0631\u0633\u06cc \u0622\u0646 \u062e\u0648\u0627\u0647\u06cc\u0645 \u067e\u0631\u062f\u0627\u062e\u062a <code>main<\/code>:<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight rust\"><code><span class=\"k\">fn<\/span> <span class=\"nf\">main<\/span><span class=\"p\">()<\/span> <span class=\"k\">-&gt;<\/span> <span class=\"nb\">Result<\/span><span class=\"o\"><span class=\"p\">()<\/span><span class=\"o\">&gt;<\/span> <span class=\"p\">{<\/span>\n    <span class=\"o\">...<\/span>\n    <span class=\"k\">let<\/span> <span class=\"n\">options<\/span> <span class=\"o\">=<\/span> <span class=\"nn\">eframe<\/span><span class=\"p\">::<\/span><span class=\"n\">NativeOptions<\/span> <span class=\"p\">{<\/span>\n        <span class=\"n\">viewport<\/span><span class=\"p\">:<\/span> <span class=\"nn\">egui<\/span><span class=\"p\">::<\/span><span class=\"nn\">ViewportBuilder<\/span><span class=\"p\">::<\/span><span class=\"nf\">default<\/span><span class=\"p\">()<\/span>\n            <span class=\"nf\">.with_always_on_top<\/span><span class=\"p\">()<\/span>\n            <span class=\"nf\">.with_inner_size<\/span><span class=\"p\">([<\/span><span class=\"mf\">640.0<\/span><span class=\"p\">,<\/span> <span class=\"mf\">480.0<\/span><span class=\"p\">]),<\/span>\n        <span class=\"o\">..<\/span><span class=\"nn\">Default<\/span><span class=\"p\">::<\/span><span class=\"nf\">default<\/span><span class=\"p\">()<\/span>\n    <span class=\"p\">};<\/span>\n    <span class=\"o\">...<\/span>\n    <span class=\"nn\">eframe<\/span><span class=\"p\">::<\/span><span class=\"nf\">run_native<\/span><span class=\"p\">(<\/span>\n        <span class=\"s\">\"PetApp\"<\/span><span class=\"p\">,<\/span>\n        <span class=\"n\">options<\/span><span class=\"p\">,<\/span>\n        <span class=\"nn\">Box<\/span><span class=\"p\">::<\/span><span class=\"nf\">new<\/span><span class=\"p\">(|<\/span><span class=\"n\">context<\/span><span class=\"p\">|<\/span> <span class=\"p\">{<\/span>\n            <span class=\"nn\">egui_extras<\/span><span class=\"p\">::<\/span><span class=\"nf\">install_image_loaders<\/span><span class=\"p\">(<\/span><span class=\"o\">&amp;<\/span><span class=\"n\">context<\/span><span class=\"py\">.egui_ctx<\/span><span class=\"p\">);<\/span>\n            <span class=\"nf\">Ok<\/span><span class=\"p\">(<\/span><span class=\"nn\">PetApp<\/span><span class=\"p\">::<\/span><span class=\"nf\">new<\/span><span class=\"p\">(<\/span>\n                <span class=\"n\">background_event_sender<\/span><span class=\"p\">,<\/span>\n                <span class=\"n\">event_receiver<\/span><span class=\"p\">,<\/span>\n                <span class=\"n\">db_con<\/span><span class=\"p\">,<\/span>\n            <span class=\"p\">)<\/span><span class=\"o\">?<\/span><span class=\"p\">)<\/span>\n        <span class=\"p\">}),<\/span>\n    <span class=\"p\">)<\/span>\n    <span class=\"nf\">.map_err<\/span><span class=\"p\">(|<\/span><span class=\"n\">e<\/span><span class=\"p\">|<\/span> <span class=\"nd\">anyhow!<\/span><span class=\"p\">(<\/span><span class=\"s\">\"eframe error: {}\"<\/span><span class=\"p\">,<\/span> <span class=\"n\">e<\/span><span class=\"p\">))<\/span>\n<span class=\"p\">}<\/span>\n<\/span><\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<p>\u0645\u0627 \u0628\u0631\u062e\u06cc \u0627\u0632 \u06af\u0632\u06cc\u0646\u0647 \u0647\u0627\u06cc \u0628\u0631\u0646\u0627\u0645\u0647 \u0645\u0627\u0646\u0646\u062f \u0627\u0646\u062f\u0627\u0632\u0647 \u067e\u0646\u062c\u0631\u0647 \u0631\u0627 \u062a\u0639\u0631\u06cc\u0641 \u0645\u06cc \u06a9\u0646\u06cc\u0645 \u0648 \u0633\u067e\u0633 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc \u06a9\u0646\u06cc\u0645 <code>eframe::run_native<\/code> \u0628\u0631\u0627\u06cc \u0645\u0642\u062f\u0627\u0631\u062f\u0647\u06cc \u0627\u0648\u0644\u06cc\u0647 \u0628\u0631\u0646\u0627\u0645\u0647 \u0631\u0627\u0628\u0637 \u06a9\u0627\u0631\u0628\u0631\u06cc \u06af\u0631\u0627\u0641\u06cc\u06a9\u06cc. <\/p>\n<p>\u06cc\u06a9\u06cc \u0627\u0632 \u0645\u0648\u0627\u0631\u062f\u06cc \u06a9\u0647 \u062f\u0631 \u0627\u06cc\u0646\u062c\u0627 \u0628\u0627\u06cc\u062f \u0628\u0647 \u0622\u0646 \u0627\u0634\u0627\u0631\u0647 \u06a9\u0631\u062f\u060c \u0644\u0648\u062f\u0631\u0647\u0627\u06cc egui_extras \u0647\u0633\u062a\u0646\u062f \u06a9\u0647 \u062f\u0631 \u062d\u06cc\u0646 \u0627\u06cc\u062c\u0627\u062f \u0628\u0631\u0646\u0627\u0645\u0647 \u0646\u0635\u0628 \u0645\u06cc\u200c\u06a9\u0646\u06cc\u0645. \u0627\u06cc\u0646\u0647\u0627 \u06a9\u0645\u06a9\u200c\u0647\u0627\u06cc\u06cc \u0647\u0633\u062a\u0646\u062f \u06a9\u0647 \u0628\u0627\u0631\u06af\u0630\u0627\u0631\u06cc \u067e\u0648\u06cc\u0627 \u062a\u0635\u0627\u0648\u06cc\u0631 \u0631\u0627 \u0627\u0632 \u0631\u0648\u06cc \u062f\u06cc\u0633\u06a9 \u06cc\u0627 \u0627\u0632 \u06cc\u06a9 URL \u062f\u0631\u0648\u0646 \u0622\u0633\u0627\u0646 \u0645\u06cc\u200c\u06a9\u0646\u0646\u062f <code>egui<\/code>. \u0627\u06cc\u0646 \u0639\u0645\u0644\u06a9\u0631\u062f \u0631\u0627 \u0645\u06cc \u062a\u0648\u0627\u0646 \u0633\u0641\u0627\u0631\u0634\u06cc \u06a9\u0631\u062f\u060c \u0627\u0645\u0627 \u067e\u06cc\u0634 \u0641\u0631\u0636 \u06a9\u0627\u0645\u0644\u0627\u064b \u0645\u0641\u06cc\u062f \u0627\u0633\u062a\u060c \u0646\u0634\u0627\u0646\u06af\u0631 \u0628\u0627\u0631\u06af\u0630\u0627\u0631\u06cc \u0631\u0627 \u062f\u0631 \u062d\u06cc\u0646 \u0648\u0627\u06a9\u0634\u06cc \u062a\u0635\u0648\u06cc\u0631 \u0648 \u0633\u067e\u0633 \u0646\u0645\u0627\u06cc\u0634 \u0622\u0646 \u0631\u0627 \u0646\u0634\u0627\u0646 \u0645\u06cc \u062f\u0647\u062f. <\/p>\n<p>\u0627\u0632 \u0622\u0646\u062c\u0627\u06cc\u06cc \u06a9\u0647 \u0645\u0627 \u0641\u0642\u0637 \u0645\u06cc \u062a\u0648\u0627\u0646\u06cc\u0645 \u0627\u0632 \u0627\u0646\u0648\u0627\u0639\u06cc \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0646\u06cc\u0645 \u06a9\u0647 the \u0631\u0627 \u067e\u06cc\u0627\u062f\u0647 \u0633\u0627\u0632\u06cc \u06a9\u0646\u0646\u062f <code>eframe::App<\/code> \u0635\u0641\u062a \u062f\u0631\u0648\u0646 <code>eframe::run_native<\/code>\u060c \u0645\u0627 \u0628\u0627\u06cc\u062f \u0627\u06cc\u0646 \u0648\u06cc\u0698\u06af\u06cc \u0631\u0627 \u0627\u062c\u0631\u0627 \u06a9\u0646\u06cc\u0645. <\/p>\n<p>\u0627\u062c\u0631\u0627 \u0641\u0642\u0637 \u0634\u0627\u0645\u0644 <code>update<\/code> \u062a\u0627\u0628\u0639\u06cc \u06a9\u0647 \u062f\u0627\u0631\u0627\u06cc \u0627\u0645\u0636\u0627\u06cc \u0632\u06cc\u0631 \u0627\u0633\u062a:<\/p>\n<ul>\n<li>  <code>fn update(&amp;mut self, ctx: &amp;eframe::egui::Context, _frame: &amp;mut eframe::Frame)<\/code>\n<\/li>\n<\/ul>\n<p>\u0637\u0648\u0644 \u0645\u06cc \u06a9\u0634\u062f <code>Context<\/code> \u0648 \u0627\u0644\u0641 <code>Frame<\/code>\u060c \u06a9\u0647 \u0645\u0627 \u0628\u0647 \u0622\u0646 \u0646\u06cc\u0627\u0632 \u0646\u062e\u0648\u0627\u0647\u06cc\u0645 \u062f\u0627\u0634\u062a. \u0627\u0645\u0627 \u0627\u062d\u062a\u0645\u0627\u0644\u0627\u064b \u0645\u06cc \u062a\u0648\u0627\u0646\u06cc\u062f \u0622\u0646 \u0631\u0627 \u0628\u0647 \u062e\u0627\u0637\u0631 \u0628\u0633\u067e\u0627\u0631\u06cc\u062f <code>Context<\/code>\u060c \u0632\u06cc\u0631\u0627 \u0627\u06cc\u0646 \u0647\u0645\u0627\u0646 \u0686\u06cc\u0632\u06cc \u0627\u0633\u062a \u06a9\u0647 \u0642\u0628\u0644\u0627\u064b \u0628\u0631\u0627\u06cc \u0634\u0631\u0648\u0639 \u0631\u0646\u06af \u0622\u0645\u06cc\u0632\u06cc \u0645\u062c\u062f\u062f \u062f\u0631 \u0645\u0648\u0636\u0648\u0639 \u0631\u0646\u062f\u0631 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0631\u062f\u06cc\u0645. \u0628\u0646\u0627\u0628\u0631\u0627\u06cc\u0646 \u0647\u0631 \u0632\u0645\u0627\u0646 \u06a9\u0647 \u062a\u0645\u0627\u0633 \u0645\u06cc \u06af\u06cc\u0631\u06cc\u0645 <code>context.request_repaint()<\/code>\u060c \u0627\u06cc\u0646 <code>update<\/code> \u062a\u0627\u0628\u0639 \u062f\u0648\u0628\u0627\u0631\u0647 \u0641\u0631\u0627\u062e\u0648\u0627\u0646\u06cc \u0645\u06cc \u0634\u0648\u062f:<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight rust\"><code><span class=\"k\">impl<\/span> <span class=\"nn\">eframe<\/span><span class=\"p\">::<\/span><span class=\"n\">App<\/span> <span class=\"k\">for<\/span> <span class=\"n\">PetApp<\/span> <span class=\"p\">{<\/span>\n    <span class=\"k\">fn<\/span> <span class=\"nf\">update<\/span><span class=\"p\">(<\/span><span class=\"o\">&amp;<\/span><span class=\"k\">mut<\/span> <span class=\"k\">self<\/span><span class=\"p\">,<\/span> <span class=\"n\">ctx<\/span><span class=\"p\">:<\/span> <span class=\"o\">&amp;<\/span><span class=\"nn\">eframe<\/span><span class=\"p\">::<\/span><span class=\"nn\">egui<\/span><span class=\"p\">::<\/span><span class=\"n\">Context<\/span><span class=\"p\">,<\/span> <span class=\"n\">_frame<\/span><span class=\"p\">:<\/span> <span class=\"o\">&amp;<\/span><span class=\"k\">mut<\/span> <span class=\"nn\">eframe<\/span><span class=\"p\">::<\/span><span class=\"n\">Frame<\/span><span class=\"p\">)<\/span> <span class=\"p\">{<\/span>\n        <span class=\"k\">self<\/span><span class=\"nf\">.handle_gui_events<\/span><span class=\"p\">();<\/span>\n\n        <span class=\"nn\">egui<\/span><span class=\"p\">::<\/span><span class=\"nn\">CentralPanel<\/span><span class=\"p\">::<\/span><span class=\"nf\">default<\/span><span class=\"p\">()<\/span><span class=\"nf\">.show<\/span><span class=\"p\">(<\/span><span class=\"n\">ctx<\/span><span class=\"p\">,<\/span> <span class=\"p\">|<\/span><span class=\"n\">ui<\/span><span class=\"p\">|<\/span> <span class=\"p\">{<\/span>\n            <span class=\"nn\">egui<\/span><span class=\"p\">::<\/span><span class=\"nn\">SidePanel<\/span><span class=\"p\">::<\/span><span class=\"nf\">left<\/span><span class=\"p\">(<\/span><span class=\"s\">\"left panel\"<\/span><span class=\"p\">)<\/span>\n                <span class=\"nf\">.resizable<\/span><span class=\"p\">(<\/span><span class=\"k\">false<\/span><span class=\"p\">)<\/span>\n                <span class=\"nf\">.default_width<\/span><span class=\"p\">(<\/span><span class=\"mf\">200.0<\/span><span class=\"p\">)<\/span>\n                <span class=\"nf\">.show_inside<\/span><span class=\"p\">(<\/span><span class=\"n\">ui<\/span><span class=\"p\">,<\/span> <span class=\"p\">|<\/span><span class=\"n\">ui<\/span><span class=\"p\">|<\/span> <span class=\"p\">{<\/span>\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<p>\u0627\u062c\u0631\u0627\u06cc \u0622\u0646 \u0631\u0627 \u0622\u063a\u0627\u0632 \u0645\u06cc \u06a9\u0646\u06cc\u0645 <code>update<\/code> \u0628\u0627 \u062a\u0645\u0627\u0633 \u0628\u0627 \u0645\u0627 <code>handle_gui_events<\/code> \u0631\u0648\u0634\u06cc \u06a9\u0647 \u062f\u0631 \u0628\u0627\u0644\u0627 \u067e\u06cc\u0627\u062f\u0647 \u0633\u0627\u0632\u06cc \u06a9\u0631\u062f\u06cc\u0645. \u0627\u06cc\u0646 \u0642\u0633\u0645\u062a \u062f\u0631\u06cc\u0627\u0641\u062a \u06a9\u0646\u0646\u062f\u0647 \u06a9\u0627\u0646\u0627\u0644 \u0631\u0627 \u0628\u0631\u0627\u06cc \u0631\u0648\u06cc\u062f\u0627\u062f\u0647\u0627 \u0628\u0631\u0631\u0633\u06cc \u0645\u06cc \u06a9\u0646\u062f \u0648 \u0622\u0646\u0647\u0627 \u0631\u0627 \u0627\u0639\u0645\u0627\u0644 \u0645\u06cc \u06a9\u0646\u062f\u060c \u06a9\u0647 \u062a\u0636\u0645\u06cc\u0646 \u0645\u06cc \u06a9\u0646\u062f \u06a9\u0647 \u06cc\u06a9 AppState \u0628\u0647 \u0631\u0648\u0632 \u062e\u0648\u0627\u0647\u06cc\u0645 \u062f\u0627\u0634\u062a \u06a9\u0647 \u0648\u0627\u0631\u062f \u0645\u0631\u062d\u0644\u0647 \u0631\u0646\u062f\u0631 \u0645\u0627 \u0645\u06cc \u0634\u0648\u062f. <\/p>\n<p>\u0647\u0645\u0627\u0646\u0637\u0648\u0631 \u06a9\u0647 \u062f\u0631 \u0628\u0627\u0644\u0627 \u0630\u06a9\u0631 \u0634\u062f\u060c \u0628\u0627 \u062a\u0648\u062c\u0647 \u0628\u0647 \u0627\u06cc\u0646\u06a9\u0647 egui \u06cc\u06a9 \u0686\u0627\u0631\u0686\u0648\u0628 \u0631\u0627\u0628\u0637 \u06a9\u0627\u0631\u0628\u0631\u06cc \u06af\u0631\u0627\u0641\u06cc\u06a9\u06cc \u062d\u0627\u0644\u062a \u0641\u0648\u0631\u06cc \u0627\u0633\u062a\u060c \u0647\u0631 \u0686\u06cc\u0632\u06cc \u06a9\u0647 \u062f\u0631 \u0627\u06cc\u0646\u062c\u0627 \u062a\u0639\u0631\u06cc\u0641 \u0645\u06cc \u06a9\u0646\u06cc\u0645 \u062f\u0631 \u0647\u0631 \u0641\u0631\u06cc\u0645 \u0631\u0646\u062f\u0631 \u0645\u06cc \u0634\u0648\u062f. \u0628\u0646\u0627\u0628\u0631\u0627\u06cc\u0646 \u0627\u06af\u0631 \u0628\u0647 \u062f\u0644\u06cc\u0644 \u0627\u0631\u0633\u0627\u0644 \u06cc\u06a9 \u0631\u0648\u06cc\u062f\u0627\u062f\u060c \u062a\u063a\u06cc\u06cc\u0631\u06cc \u062f\u0631 \u0627\u06cc\u0646\u062c\u0627 \u062f\u0631 AppState \u0627\u06cc\u062c\u0627\u062f \u06a9\u0646\u06cc\u0645\u060c \u0628\u0644\u0627\u0641\u0627\u0635\u0644\u0647 \u062f\u0631 \u0631\u0627\u0628\u0637 \u06a9\u0627\u0631\u0628\u0631\u06cc \u0646\u0645\u0627\u06cc\u0634 \u062f\u0627\u062f\u0647 \u0645\u06cc\u200c\u0634\u0648\u062f \u0628\u062f\u0648\u0646 \u0627\u06cc\u0646\u06a9\u0647 \u0646\u06cc\u0627\u0632\u06cc \u0628\u0647 \u062f\u0633\u062a\u06a9\u0627\u0631\u06cc \u0648 \u0628\u0647\u200c\u0631\u0648\u0632\u0631\u0633\u0627\u0646\u06cc \u0647\u0631 \u0645\u0624\u0644\u0641\u0647\u200c\u0627\u06cc \u062f\u0627\u0634\u062a\u0647 \u0628\u0627\u0634\u06cc\u0645. <\/p>\n<p>\u0633\u067e\u0633\u060c \u06a9\u0644\u06cc \u0631\u0627 \u062a\u0639\u0631\u06cc\u0641 \u0645\u06cc \u06a9\u0646\u06cc\u0645 <code>CentralPanel<\/code> \u0648 \u062f\u0631 \u062f\u0627\u062e\u0644 \u0622\u0646 \u0628\u0627 \u0631\u0646\u062f\u0631 \u06a9\u0631\u062f\u0646 \u067e\u0646\u0644 \u0644\u06cc\u0633\u062a \u0633\u0645\u062a \u0686\u067e \u0634\u0631\u0648\u0639 \u06a9\u0646\u06cc\u062f\u060c \u06a9\u0647 \u0622\u0646 \u0631\u0627 \u0631\u0648\u06cc \u0639\u0631\u0636 \u062a\u0646\u0638\u06cc\u0645 \u0645\u06cc \u06a9\u0646\u06cc\u0645 <code>200.0<\/code> \u0648 \u0642\u0627\u0628\u0644 \u062a\u063a\u06cc\u06cc\u0631 \u0627\u0646\u062f\u0627\u0632\u0647 \u0646\u06cc\u0633\u062a. <\/p>\n<p>\u062f\u0631 \u0627\u06cc\u0646 \u067e\u0627\u0646\u0644\u060c \u0645\u0627 \u0631\u0627 \u0646\u0634\u0627\u0646 \u062e\u0648\u0627\u0647\u06cc\u0645 \u062f\u0627\u062f <code>Pets<\/code> \u0639\u0646\u0648\u0627\u0646\u060c \u062c\u062f\u0627\u06a9\u0646\u0646\u062f\u0647\u060c <code>Add new Pet<\/code> \u062f\u06a9\u0645\u0647 \u0648\u060c \u0627\u06af\u0631 \u062f\u06a9\u0645\u0647 \u0641\u0634\u0627\u0631 \u062f\u0627\u062f\u0647 \u0634\u062f\u060c \u0641\u0631\u0645 \u0627\u0636\u0627\u0641\u0647 \u06a9\u0631\u062f\u0646 \u06cc\u06a9 \u062d\u06cc\u0648\u0627\u0646 \u062e\u0627\u0646\u06af\u06cc \u062c\u062f\u06cc\u062f. \u062f\u0631 \u0632\u06cc\u0631 \u0622\u0646\u060c \u06cc\u06a9 \u062c\u062f\u0627\u06a9\u0646\u0646\u062f\u0647 \u062f\u06cc\u06af\u0631 \u0648 \u0644\u06cc\u0633\u062a \u062d\u06cc\u0648\u0627\u0646\u0627\u062a \u062e\u0627\u0646\u06af\u06cc:<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight rust\"><code>                    <span class=\"n\">ui<\/span><span class=\"nf\">.vertical_centered<\/span><span class=\"p\">(|<\/span><span class=\"n\">ui<\/span><span class=\"p\">|<\/span> <span class=\"p\">{<\/span>\n                        <span class=\"n\">ui<\/span><span class=\"nf\">.heading<\/span><span class=\"p\">(<\/span><span class=\"s\">\"Pets\"<\/span><span class=\"p\">);<\/span>\n                        <span class=\"n\">ui<\/span><span class=\"nf\">.separator<\/span><span class=\"p\">();<\/span>\n                        <span class=\"k\">if<\/span> <span class=\"n\">ui<\/span><span class=\"nf\">.button<\/span><span class=\"p\">(<\/span><span class=\"s\">\"Add new Pet\"<\/span><span class=\"p\">)<\/span><span class=\"nf\">.clicked<\/span><span class=\"p\">()<\/span> <span class=\"p\">{<\/span>\n                            <span class=\"k\">self<\/span><span class=\"py\">.app_state.add_form.show<\/span> <span class=\"o\">=<\/span> <span class=\"o\">!<\/span><span class=\"k\">self<\/span><span class=\"py\">.app_state.add_form.show<\/span><span class=\"p\">;<\/span>\n                        <span class=\"p\">}<\/span>\n                        <span class=\"k\">if<\/span> <span class=\"k\">self<\/span><span class=\"py\">.app_state.add_form.show<\/span> <span class=\"p\">{<\/span>\n                            <span class=\"n\">ui<\/span><span class=\"nf\">.separator<\/span><span class=\"p\">();<\/span>\n\n                            <span class=\"n\">ui<\/span><span class=\"nf\">.vertical_centered<\/span><span class=\"p\">(|<\/span><span class=\"n\">ui<\/span><span class=\"p\">|<\/span> <span class=\"p\">{<\/span>\n                                <span class=\"n\">ui<\/span><span class=\"nf\">.horizontal<\/span><span class=\"p\">(|<\/span><span class=\"n\">ui<\/span><span class=\"p\">|<\/span> <span class=\"p\">{<\/span>\n                                    <span class=\"n\">ui<\/span><span class=\"nf\">.vertical<\/span><span class=\"p\">(|<\/span><span class=\"n\">ui<\/span><span class=\"p\">|<\/span> <span class=\"p\">{<\/span>\n                                        <span class=\"n\">ui<\/span><span class=\"nf\">.label<\/span><span class=\"p\">(<\/span><span class=\"s\">\"name:\"<\/span><span class=\"p\">);<\/span>\n                                        <span class=\"n\">ui<\/span><span class=\"nf\">.label<\/span><span class=\"p\">(<\/span><span class=\"s\">\"age\"<\/span><span class=\"p\">);<\/span>\n                                        <span class=\"n\">ui<\/span><span class=\"nf\">.label<\/span><span class=\"p\">(<\/span><span class=\"s\">\"kind\"<\/span><span class=\"p\">);<\/span>\n                                    <span class=\"p\">});<\/span>\n                                    <span class=\"n\">ui<\/span><span class=\"nf\">.end_row<\/span><span class=\"p\">();<\/span>\n                                    <span class=\"n\">ui<\/span><span class=\"nf\">.vertical<\/span><span class=\"p\">(|<\/span><span class=\"n\">ui<\/span><span class=\"p\">|<\/span> <span class=\"p\">{<\/span>\n                                        <span class=\"n\">ui<\/span><span class=\"nf\">.text_edit_singleline<\/span><span class=\"p\">(<\/span><span class=\"o\">&amp;<\/span><span class=\"k\">mut<\/span> <span class=\"k\">self<\/span><span class=\"py\">.app_state.add_form.name<\/span><span class=\"p\">);<\/span>\n                                        <span class=\"n\">ui<\/span><span class=\"nf\">.text_edit_singleline<\/span><span class=\"p\">(<\/span><span class=\"o\">&amp;<\/span><span class=\"k\">mut<\/span> <span class=\"k\">self<\/span><span class=\"py\">.app_state.add_form.age<\/span><span class=\"p\">);<\/span>\n                                        <span class=\"n\">ui<\/span><span class=\"nf\">.text_edit_singleline<\/span><span class=\"p\">(<\/span><span class=\"o\">&amp;<\/span><span class=\"k\">mut<\/span> <span class=\"k\">self<\/span><span class=\"py\">.app_state.add_form.kind<\/span><span class=\"p\">);<\/span>\n                                    <span class=\"p\">});<\/span>\n                                <span class=\"p\">});<\/span>\n\n                                <span class=\"k\">if<\/span> <span class=\"n\">ui<\/span><span class=\"nf\">.button<\/span><span class=\"p\">(<\/span><span class=\"s\">\"Submit\"<\/span><span class=\"p\">)<\/span><span class=\"nf\">.clicked<\/span><span class=\"p\">()<\/span> <span class=\"p\">{<\/span>\n                                    <span class=\"k\">let<\/span> <span class=\"n\">add_form<\/span> <span class=\"o\">=<\/span> <span class=\"o\">&amp;<\/span><span class=\"k\">mut<\/span> <span class=\"k\">self<\/span><span class=\"py\">.app_state.add_form<\/span><span class=\"p\">;<\/span>\n                                    <span class=\"k\">let<\/span> <span class=\"n\">age<\/span> <span class=\"o\">=<\/span> <span class=\"n\">add_form<\/span><span class=\"py\">.age.parse<\/span><span class=\"p\">::()<\/span><span class=\"nf\">.unwrap_or<\/span><span class=\"p\">(<\/span><span class=\"mi\">0<\/span><span class=\"p\">);<\/span>\n                                    <span class=\"k\">let<\/span> <span class=\"n\">kind<\/span> <span class=\"o\">=<\/span> <span class=\"k\">match<\/span> <span class=\"n\">add_form<\/span><span class=\"py\">.kind<\/span><span class=\"nf\">.as_str<\/span><span class=\"p\">()<\/span> <span class=\"p\">{<\/span>\n                                        <span class=\"s\">\"cat\"<\/span> <span class=\"k\">=&gt;<\/span> <span class=\"nf\">PetKind<\/span><span class=\"p\">(<\/span><span class=\"nn\">String<\/span><span class=\"p\">::<\/span><span class=\"nf\">from<\/span><span class=\"p\">(<\/span><span class=\"s\">\"cat\"<\/span><span class=\"p\">)),<\/span>\n                                        <span class=\"n\">_<\/span> <span class=\"k\">=&gt;<\/span> <span class=\"nf\">PetKind<\/span><span class=\"p\">(<\/span><span class=\"nn\">String<\/span><span class=\"p\">::<\/span><span class=\"nf\">from<\/span><span class=\"p\">(<\/span><span class=\"s\">\"dog\"<\/span><span class=\"p\">)),<\/span>\n                                    <span class=\"p\">};<\/span>\n                                    <span class=\"k\">let<\/span> <span class=\"n\">name<\/span> <span class=\"o\">=<\/span> <span class=\"n\">add_form<\/span><span class=\"py\">.name<\/span><span class=\"nf\">.to_owned<\/span><span class=\"p\">();<\/span>\n                                    <span class=\"k\">if<\/span> <span class=\"o\">!<\/span><span class=\"n\">name<\/span><span class=\"nf\">.is_empty<\/span><span class=\"p\">()<\/span> <span class=\"o\">&amp;&amp;<\/span> <span class=\"n\">age<\/span> <span class=\"o\">&gt;<\/span> <span class=\"mi\">0<\/span> <span class=\"p\">{<\/span>\n                                        <span class=\"k\">let<\/span> <span class=\"n\">_<\/span> <span class=\"o\">=<\/span> <span class=\"k\">self<\/span><span class=\"py\">.background_event_sender<\/span><span class=\"nf\">.send<\/span><span class=\"p\">(<\/span>\n                                            <span class=\"nn\">Event<\/span><span class=\"p\">::<\/span><span class=\"nf\">InsertPetToDB<\/span><span class=\"p\">(<\/span>\n                                                <span class=\"n\">ctx<\/span><span class=\"nf\">.clone<\/span><span class=\"p\">(),<\/span>\n                                                <span class=\"k\">self<\/span><span class=\"py\">.db_con<\/span><span class=\"nf\">.clone<\/span><span class=\"p\">(),<\/span>\n                                                <span class=\"n\">Pet<\/span> <span class=\"p\">{<\/span>\n                                                    <span class=\"n\">id<\/span><span class=\"p\">:<\/span> <span class=\"o\">-<\/span><span class=\"mi\">1<\/span><span class=\"p\">,<\/span>\n                                                    <span class=\"n\">name<\/span><span class=\"p\">,<\/span>\n                                                    <span class=\"n\">age<\/span><span class=\"p\">,<\/span>\n                                                    <span class=\"n\">kind<\/span><span class=\"p\">:<\/span> <span class=\"n\">kind<\/span><span class=\"nf\">.clone<\/span><span class=\"p\">(),<\/span>\n                                                <span class=\"p\">},<\/span>\n                                            <span class=\"p\">),<\/span>\n                                        <span class=\"p\">);<\/span>\n                                        <span class=\"k\">let<\/span> <span class=\"n\">_<\/span> <span class=\"o\">=<\/span> <span class=\"k\">self<\/span>\n                                            <span class=\"py\">.background_event_sender<\/span>\n                                            <span class=\"nf\">.send<\/span><span class=\"p\">(<\/span><span class=\"nn\">Event<\/span><span class=\"p\">::<\/span><span class=\"nf\">GetPetImage<\/span><span class=\"p\">(<\/span><span class=\"n\">ctx<\/span><span class=\"nf\">.clone<\/span><span class=\"p\">(),<\/span> <span class=\"n\">kind<\/span><span class=\"p\">));<\/span>\n                                        <span class=\"n\">add_form<\/span><span class=\"py\">.name<\/span> <span class=\"o\">=<\/span> <span class=\"nn\">String<\/span><span class=\"p\">::<\/span><span class=\"nf\">default<\/span><span class=\"p\">();<\/span>\n                                        <span class=\"n\">add_form<\/span><span class=\"py\">.age<\/span> <span class=\"o\">=<\/span> <span class=\"nn\">String<\/span><span class=\"p\">::<\/span><span class=\"nf\">default<\/span><span class=\"p\">();<\/span>\n                                        <span class=\"n\">add_form<\/span><span class=\"py\">.kind<\/span> <span class=\"o\">=<\/span> <span class=\"nn\">String<\/span><span class=\"p\">::<\/span><span class=\"nf\">default<\/span><span class=\"p\">();<\/span>\n                                    <span class=\"p\">}<\/span>\n                                <span class=\"p\">}<\/span>\n                            <span class=\"p\">});<\/span>\n                        <span class=\"p\">}<\/span>\n\n                        <span class=\"n\">ui<\/span><span class=\"nf\">.separator<\/span><span class=\"p\">();<\/span>\n                        <span class=\"k\">self<\/span><span class=\"py\">.app_state.pets<\/span><span class=\"nf\">.iter<\/span><span class=\"p\">()<\/span><span class=\"nf\">.for_each<\/span><span class=\"p\">(|<\/span><span class=\"n\">pet<\/span><span class=\"p\">|<\/span> <span class=\"p\">{<\/span>\n                            <span class=\"k\">if<\/span> <span class=\"n\">ui<\/span>\n                                <span class=\"nf\">.selectable_value<\/span><span class=\"p\">(<\/span>\n                                    <span class=\"o\">&amp;<\/span><span class=\"k\">mut<\/span> <span class=\"k\">self<\/span><span class=\"py\">.app_state.selected_pet<\/span><span class=\"p\">,<\/span>\n                                    <span class=\"nf\">Some<\/span><span class=\"p\">(<\/span><span class=\"n\">pet<\/span><span class=\"nf\">.to_owned<\/span><span class=\"p\">()),<\/span>\n                                    <span class=\"n\">pet<\/span><span class=\"py\">.name<\/span><span class=\"nf\">.clone<\/span><span class=\"p\">(),<\/span>\n                                <span class=\"p\">)<\/span>\n                                <span class=\"nf\">.changed<\/span><span class=\"p\">()<\/span>\n                            <span class=\"p\">{<\/span>\n                                <span class=\"k\">let<\/span> <span class=\"n\">_<\/span> <span class=\"o\">=<\/span> <span class=\"k\">self<\/span><span class=\"py\">.background_event_sender<\/span><span class=\"nf\">.send<\/span><span class=\"p\">(<\/span><span class=\"nn\">Event<\/span><span class=\"p\">::<\/span><span class=\"nf\">GetPetFromDB<\/span><span class=\"p\">(<\/span>\n                                    <span class=\"n\">ctx<\/span><span class=\"nf\">.clone<\/span><span class=\"p\">(),<\/span>\n                                    <span class=\"k\">self<\/span><span class=\"py\">.db_con<\/span><span class=\"nf\">.clone<\/span><span class=\"p\">(),<\/span>\n                                    <span class=\"n\">pet<\/span><span class=\"py\">.id<\/span><span class=\"p\">,<\/span>\n                                <span class=\"p\">));<\/span>\n                                <span class=\"k\">let<\/span> <span class=\"n\">_<\/span> <span class=\"o\">=<\/span> <span class=\"k\">self<\/span>\n                                    <span class=\"py\">.background_event_sender<\/span>\n                                    <span class=\"nf\">.send<\/span><span class=\"p\">(<\/span><span class=\"nn\">Event<\/span><span class=\"p\">::<\/span><span class=\"nf\">GetPetImage<\/span><span class=\"p\">(<\/span><span class=\"n\">ctx<\/span><span class=\"nf\">.clone<\/span><span class=\"p\">(),<\/span> <span class=\"n\">pet<\/span><span class=\"py\">.kind<\/span><span class=\"nf\">.clone<\/span><span class=\"p\">()));<\/span>\n                            <span class=\"p\">}<\/span>\n                        <span class=\"p\">});<\/span>\n                    <span class=\"p\">});<\/span>\n                <span class=\"p\">});<\/span>\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<p>\u0631\u0648\u0634\u06cc \u06a9\u0647 \u0645\u0627 \u062a\u0639\u0627\u0645\u0644\u0627\u062a \u0631\u0627 \u062f\u0631 \u0631\u0627\u0628\u0637\u200c\u0647\u0627\u06cc \u06a9\u0627\u0631\u0628\u0631\u06cc \u06af\u0631\u0627\u0641\u06cc\u06a9\u06cc \u062d\u0627\u0644\u062a \u0641\u0648\u0631\u06cc \u0645\u062f\u06cc\u0631\u06cc\u062a \u0645\u06cc\u200c\u06a9\u0646\u06cc\u0645 \u0627\u06cc\u0646 \u0627\u0633\u062a \u06a9\u0647 \u0639\u0646\u0627\u0635\u0631\u06cc \u0645\u0627\u0646\u0646\u062f \u062f\u06a9\u0645\u0647\u200c\u0647\u0627 \u062d\u0627\u0644\u062a \u062e\u0648\u062f \u0631\u0627 \u0628\u0631\u0645\u06cc\u200c\u06af\u0631\u062f\u0627\u0646\u0646\u062f. \u0628\u0647 \u0639\u0646\u0648\u0627\u0646 \u0645\u062b\u0627\u0644\u060c \u0627\u06af\u0631 \u0631\u0648\u06cc \u062f\u06a9\u0645\u0647 \u062f\u0631 \u06cc\u06a9 \u0642\u0627\u0628 \u06a9\u0644\u06cc\u06a9 \u0634\u0648\u062f\u060c <code>clicked()<\/code> \u0645\u062a\u062f true \u0631\u0627 \u0628\u0631\u0645\u06cc \u06af\u0631\u062f\u0627\u0646\u062f. \u0627\u06cc\u0646 \u0628\u0633\u06cc\u0627\u0631 \u0645\u062a\u0641\u0627\u0648\u062a \u0627\u0632 \u0631\u0627\u0628\u0637\u200c\u0647\u0627\u06cc \u06a9\u0627\u0631\u0628\u0631\u06cc \u06af\u0631\u0627\u0641\u06cc\u06a9\u06cc \u062d\u0627\u0644\u062a \u062d\u0641\u0638 \u0634\u062f\u0647 \u0627\u0633\u062a\u060c \u062c\u0627\u06cc\u06cc \u06a9\u0647 \u0645\u0627 \u06cc\u06a9 \u0631\u0648\u06cc\u062f\u0627\u062f \u0634\u0646\u0648\u0646\u062f\u0647 \u0631\u0627 \u0645\u062a\u0635\u0644 \u0645\u06cc\u200c\u06a9\u0646\u06cc\u0645\u060c \u06a9\u0647 \u0633\u067e\u0633 \u0628\u0647 \u0635\u0648\u0631\u062a \u0646\u0627\u0647\u0645\u0632\u0645\u0627\u0646 \u0641\u0631\u0627\u062e\u0648\u0627\u0646\u06cc \u0645\u06cc\u200c\u0634\u0648\u062f. <\/p>\n<p>\u0628\u0631\u0627\u06cc \u062a\u063a\u06cc\u06cc\u0631\u0627\u062a \u0645\u0628\u062a\u0646\u06cc \u0628\u0631 \u062d\u0627\u0644\u062a\u060c \u0645\u0627 \u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u06cc\u0645 \u0628\u0647 \u0633\u0627\u062f\u06af\u06cc \u0627\u0632 if \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0646\u06cc\u0645\u060c \u0645\u0627\u0646\u0646\u062f \u0646\u0634\u0627\u0646 \u062f\u0627\u062f\u0646 \u0641\u0631\u0645 \u0628\u0631\u0627\u06cc \u0627\u0641\u0632\u0648\u062f\u0646 \u062d\u06cc\u0648\u0627\u0646\u0627\u062a \u062e\u0627\u0646\u06af\u06cc \u062a\u0646\u0647\u0627 \u062f\u0631 \u0635\u0648\u0631\u062a\u06cc \u06a9\u0647 \u067e\u0631\u0686\u0645 AppState \u0628\u0631\u0627\u06cc \u0646\u0634\u0627\u0646 \u062f\u0627\u062f\u0646 \u0622\u0646 \u062f\u0631\u0633\u062a \u0628\u0627\u0634\u062f \u0648 \u062d\u062a\u06cc \u0622\u0646 \u0631\u0627 \u062f\u0631 \u063a\u06cc\u0631 \u0627\u06cc\u0646 \u0635\u0648\u0631\u062a \u0631\u0646\u062f\u0631 \u0646\u06a9\u0646\u06cc\u0645. <\/p>\n<p>\u0641\u0631\u0645 \u0631\u0646\u062f\u0631 \u0646\u0633\u0628\u062a\u0627 \u0633\u0627\u062f\u0647 \u0627\u0633\u062a \u0648 \u067e\u0633 \u0627\u0632 \u06a9\u0644\u06cc\u06a9 \u06a9\u0631\u062f\u0646 <code>Submit<\/code>\u060c \u0645\u0627 \u0628\u0631\u062e\u06cc \u0627\u0632 \u0627\u0639\u062a\u0628\u0627\u0631 \u0633\u0646\u062c\u06cc \u0628\u0633\u06cc\u0627\u0631 \u0627\u0633\u0627\u0633\u06cc \u0631\u0627 \u0627\u0646\u062c\u0627\u0645 \u0645\u06cc \u062f\u0647\u06cc\u0645. \u0627\u06af\u0631 \u062f\u0627\u062f\u0647\u200c\u0647\u0627 \u062e\u0648\u0628 \u0628\u0627\u0634\u0646\u062f\u060c \u0631\u0648\u06cc\u062f\u0627\u062f\u06cc \u0631\u0627 \u0631\u0627\u0647\u200c\u0627\u0646\u062f\u0627\u0632\u06cc \u0645\u06cc\u200c\u06a9\u0646\u06cc\u0645 \u062a\u0627 \u0645\u0648\u0636\u0648\u0639 \u067e\u0633\u200c\u0632\u0645\u06cc\u0646\u0647 \u0631\u0627 \u0628\u0631\u0627\u06cc \u0627\u0641\u0632\u0648\u062f\u0646 \u06cc\u06a9 \u062d\u06cc\u0648\u0627\u0646 \u062e\u0627\u0646\u06af\u06cc \u062c\u062f\u06cc\u062f \u0628\u0647 \u067e\u0627\u06cc\u06af\u0627\u0647 \u062f\u0627\u062f\u0647 \u0645\u0637\u0644\u0639 \u06a9\u0646\u06cc\u0645. <\/p>\n<p>\u062f\u0631 \u06cc\u06a9 \u067e\u06cc\u0627\u062f\u0647\u200c\u0633\u0627\u0632\u06cc \u0648\u0627\u0642\u0639\u06cc\u060c \u0645\u0627 \u0627\u0644\u0628\u062a\u0647 \u062f\u0631 \u0627\u06cc\u0646\u062c\u0627 \u0645\u0642\u062f\u0627\u0631\u06cc \u0645\u062f\u06cc\u0631\u06cc\u062a \u062e\u0637\u0627 \u0631\u0627 \u0627\u0636\u0627\u0641\u0647 \u0645\u06cc\u200c\u06a9\u0646\u06cc\u0645\u060c \u0628\u0647 \u0639\u0646\u0648\u0627\u0646 \u0645\u062b\u0627\u0644\u060c \u0627\u06af\u0631 \u06a9\u0627\u0631\u0628\u0631 \u06cc\u06a9 \u0645\u0642\u062f\u0627\u0631 \u0646\u0627\u0645\u0639\u062a\u0628\u0631 \u0628\u0631\u0627\u06cc \u0633\u0646 \u0648\u0627\u0631\u062f \u06a9\u0646\u062f\u060c \u06cc\u06a9 \u067e\u06cc\u0627\u0645 \u062e\u0637\u0627 \u0628\u0627 \u0641\u0631\u0645\u062a \u0632\u06cc\u0628\u0627 \u0631\u0627 \u0628\u0647 \u06a9\u0627\u0631\u0628\u0631 \u0646\u0634\u0627\u0646 \u0645\u06cc\u200c\u062f\u0647\u062f. <\/p>\n<p>\u062f\u0631 \u0632\u06cc\u0631 \u0622\u0646\u060c \u0645\u0627 \u0628\u0647 \u0633\u0627\u062f\u06af\u06cc \u0644\u06cc\u0633\u062a \u062d\u06cc\u0648\u0627\u0646\u0627\u062a \u062e\u0627\u0646\u06af\u06cc \u0631\u0627 \u062a\u06a9\u0631\u0627\u0631 \u0645\u06cc \u06a9\u0646\u06cc\u0645 \u0648 \u06cc\u06a9 \u0641\u06cc\u0644\u062f \u0627\u0646\u062a\u062e\u0627\u0628\u06cc \u0628\u0631\u0627\u06cc \u0622\u0646 \u0627\u0631\u0627\u0626\u0647 \u0645\u06cc \u06a9\u0646\u06cc\u0645. \u0627\u06af\u0631 \u0631\u0648\u06cc \u06cc\u06a9\u06cc \u0627\u0632 \u062d\u06cc\u0648\u0627\u0646\u0627\u062a \u062e\u0627\u0646\u06af\u06cc \u06a9\u0644\u06cc\u06a9 \u0634\u0648\u062f\u060c \u0631\u0633\u06cc\u062f\u06af\u06cc \u0628\u0647 \u0622\u0646 \u0627\u0632 \u0637\u0631\u06cc\u0642 \u0627\u0646\u062c\u0627\u0645 \u0645\u06cc \u0634\u0648\u062f <code>changed()<\/code> \u0631\u0648\u0634 \u062f\u0631 <code>selectable_value<\/code>\u060c \u06a9\u0647 \u0628\u0647 \u0645\u0627 \u0627\u06cc\u0646 \u0627\u0637\u0644\u0627\u0639\u0627\u062a \u0631\u0627 \u0645\u06cc \u062f\u0647\u062f \u06a9\u0647 \u0645\u0642\u062f\u0627\u0631 \u062a\u063a\u06cc\u06cc\u0631 \u06a9\u0631\u062f\u0647 \u0627\u0633\u062a \u0648 \u0628\u0647 \u0645\u0627 \u0627\u0645\u06a9\u0627\u0646 \u0645\u06cc \u062f\u0647\u062f \u0631\u0648\u06cc\u062f\u0627\u062f\u06cc \u0631\u0627 \u062f\u0631 \u0631\u0634\u062a\u0647 \u067e\u0633 \u0632\u0645\u06cc\u0646\u0647 \u0628\u0631\u0627\u06cc \u0648\u0627\u06a9\u0634\u06cc \u062f\u0627\u062f\u0647 \u0647\u0627\u060c \u0628\u0647 \u0631\u0648\u0632 \u0631\u0633\u0627\u0646\u06cc AppState \u0648 \u0648\u0627\u06a9\u0634\u06cc \u06cc\u06a9 \u062a\u0635\u0648\u06cc\u0631 \u062c\u062f\u06cc\u062f \u0631\u0627\u0647 \u0627\u0646\u062f\u0627\u0632\u06cc \u06a9\u0646\u06cc\u0645. <\/p>\n<p>\u0646\u0648\u0634\u062a\u0646 UI \u0646\u06cc\u0632 \u062f\u0631 \u062f\u0627\u062e\u0644 \u0628\u0633\u06cc\u0627\u0631 \u0628\u0635\u0631\u06cc \u0627\u0633\u062a <code>egui<\/code>. \u0645\u0627 \u0645\u06cc \u062a\u0648\u0627\u0646\u06cc\u0645 \u0639\u0646\u0627\u0635\u0631 \u0633\u0627\u062e\u062a\u0627\u0631\u06cc \u0645\u062e\u062a\u0644\u0641 \u0631\u0627 \u0628\u0647 \u0637\u0648\u0631 \u062f\u0644\u062e\u0648\u0627\u0647 \u062f\u0631 \u062a\u0648\u062f\u0631\u062a\u0648 \u0642\u0631\u0627\u0631 \u062f\u0647\u06cc\u0645 \u0648 \u062f\u0631 \u0635\u0648\u0631\u062a \u0646\u06cc\u0627\u0632 \u0639\u0646\u0627\u0635\u0631 \u0627\u0641\u0642\u06cc \u0648 \u0639\u0645\u0648\u062f\u06cc \u0631\u0627 \u0627\u0636\u0627\u0641\u0647 \u06a9\u0646\u06cc\u0645. <code>egui<\/code> \u062f\u0627\u0631\u0627\u06cc \u0637\u06cc\u0641 \u06af\u0633\u062a\u0631\u062f\u0647 \u0627\u06cc \u0627\u0632 \u0648\u06cc\u062c\u062a \u0647\u0627\u06cc \u0645\u062e\u062a\u0644\u0641 \u0627\u0633\u062a. \u0627\u0645\u0627 \u0647\u0645\u0627\u0646\u0637\u0648\u0631 \u06a9\u0647 \u062f\u0631 \u0628\u0627\u0644\u0627 \u0630\u06a9\u0631 \u0634\u062f\u060c \u0633\u0627\u062e\u062a \u0648\u06cc\u062c\u062a \u0647\u0627\u06cc \u06a9\u0627\u0645\u0644\u0627\u064b \u0633\u0641\u0627\u0631\u0634\u06cc \u0628\u0627 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 API \u0631\u0646\u062f\u0631 \u0622\u0646\u0647\u0627 \u0646\u06cc\u0632 \u0627\u0645\u06a9\u0627\u0646 \u067e\u0630\u06cc\u0631 \u0627\u0633\u062a. <\/p>\n<p>\u0628\u0627 \u0648\u062c\u0648\u062f \u067e\u0646\u0644 \u0644\u06cc\u0633\u062a \u0645\u0627\u060c \u0627\u06a9\u0646\u0648\u0646 \u0645\u06cc \u062a\u0648\u0627\u0646\u06cc\u0645 \u062e\u0648\u062f \u0631\u0627 \u067e\u06cc\u0627\u062f\u0647 \u0633\u0627\u0632\u06cc \u06a9\u0646\u06cc\u0645 <code>details<\/code> \u067e\u0627\u0646\u0644. \u0627\u06cc\u0646 \u0628\u062e\u0634 \u06a9\u0645\u06cc \u0633\u0627\u062f\u0647 \u062a\u0631 \u0627\u0633\u062a \u0632\u06cc\u0631\u0627 \u0622\u0646\u0642\u062f\u0631 \u062a\u0639\u0627\u0645\u0644\u06cc \u0646\u06cc\u0633\u062a.<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight rust\"><code>            <span class=\"nn\">egui<\/span><span class=\"p\">::<\/span><span class=\"nn\">CentralPanel<\/span><span class=\"p\">::<\/span><span class=\"nf\">default<\/span><span class=\"p\">()<\/span><span class=\"nf\">.show_inside<\/span><span class=\"p\">(<\/span><span class=\"n\">ui<\/span><span class=\"p\">,<\/span> <span class=\"p\">|<\/span><span class=\"n\">ui<\/span><span class=\"p\">|<\/span> <span class=\"p\">{<\/span>\n                <span class=\"n\">ui<\/span><span class=\"nf\">.vertical_centered<\/span><span class=\"p\">(|<\/span><span class=\"n\">ui<\/span><span class=\"p\">|<\/span> <span class=\"p\">{<\/span>\n                    <span class=\"n\">ui<\/span><span class=\"nf\">.heading<\/span><span class=\"p\">(<\/span><span class=\"s\">\"Details\"<\/span><span class=\"p\">);<\/span>\n                    <span class=\"k\">if<\/span> <span class=\"k\">let<\/span> <span class=\"nf\">Some<\/span><span class=\"p\">(<\/span><span class=\"n\">pet<\/span><span class=\"p\">)<\/span> <span class=\"o\">=<\/span> <span class=\"o\">&amp;<\/span><span class=\"k\">self<\/span><span class=\"py\">.app_state.selected_pet<\/span> <span class=\"p\">{<\/span>\n                        <span class=\"n\">ui<\/span><span class=\"nf\">.vertical<\/span><span class=\"p\">(|<\/span><span class=\"n\">ui<\/span><span class=\"p\">|<\/span> <span class=\"p\">{<\/span>\n                            <span class=\"n\">ui<\/span><span class=\"nf\">.horizontal<\/span><span class=\"p\">(|<\/span><span class=\"n\">ui<\/span><span class=\"p\">|<\/span> <span class=\"p\">{<\/span>\n                                <span class=\"k\">if<\/span> <span class=\"n\">ui<\/span><span class=\"nf\">.button<\/span><span class=\"p\">(<\/span><span class=\"s\">\"Delete\"<\/span><span class=\"p\">)<\/span><span class=\"nf\">.clicked<\/span><span class=\"p\">()<\/span> <span class=\"p\">{<\/span>\n                                    <span class=\"k\">let<\/span> <span class=\"n\">_<\/span> <span class=\"o\">=<\/span>\n                                        <span class=\"k\">self<\/span><span class=\"py\">.background_event_sender<\/span><span class=\"nf\">.send<\/span><span class=\"p\">(<\/span><span class=\"nn\">Event<\/span><span class=\"p\">::<\/span><span class=\"nf\">DeletePetFromDB<\/span><span class=\"p\">(<\/span>\n                                            <span class=\"n\">ctx<\/span><span class=\"nf\">.clone<\/span><span class=\"p\">(),<\/span>\n                                            <span class=\"k\">self<\/span><span class=\"py\">.db_con<\/span><span class=\"nf\">.clone<\/span><span class=\"p\">(),<\/span>\n                                            <span class=\"n\">pet<\/span><span class=\"py\">.id<\/span><span class=\"p\">,<\/span>\n                                        <span class=\"p\">));<\/span>\n                                <span class=\"p\">}<\/span>\n                            <span class=\"p\">});<\/span>\n                            <span class=\"n\">ui<\/span><span class=\"nf\">.separator<\/span><span class=\"p\">();<\/span>\n                            <span class=\"n\">ui<\/span><span class=\"nf\">.vertical<\/span><span class=\"p\">(|<\/span><span class=\"n\">ui<\/span><span class=\"p\">|<\/span> <span class=\"p\">{<\/span>\n                                <span class=\"n\">ui<\/span><span class=\"nf\">.horizontal<\/span><span class=\"p\">(|<\/span><span class=\"n\">ui<\/span><span class=\"p\">|<\/span> <span class=\"p\">{<\/span>\n                                    <span class=\"n\">ui<\/span><span class=\"nf\">.vertical<\/span><span class=\"p\">(|<\/span><span class=\"n\">ui<\/span><span class=\"p\">|<\/span> <span class=\"p\">{<\/span>\n                                        <span class=\"n\">ui<\/span><span class=\"nf\">.label<\/span><span class=\"p\">(<\/span><span class=\"s\">\"id:\"<\/span><span class=\"p\">);<\/span>\n                                        <span class=\"n\">ui<\/span><span class=\"nf\">.label<\/span><span class=\"p\">(<\/span><span class=\"s\">\"name:\"<\/span><span class=\"p\">);<\/span>\n                                        <span class=\"n\">ui<\/span><span class=\"nf\">.label<\/span><span class=\"p\">(<\/span><span class=\"s\">\"age\"<\/span><span class=\"p\">);<\/span>\n                                        <span class=\"n\">ui<\/span><span class=\"nf\">.label<\/span><span class=\"p\">(<\/span><span class=\"s\">\"kind\"<\/span><span class=\"p\">);<\/span>\n                                    <span class=\"p\">});<\/span>\n                                    <span class=\"n\">ui<\/span><span class=\"nf\">.end_row<\/span><span class=\"p\">();<\/span>\n                                    <span class=\"n\">ui<\/span><span class=\"nf\">.vertical<\/span><span class=\"p\">(|<\/span><span class=\"n\">ui<\/span><span class=\"p\">|<\/span> <span class=\"p\">{<\/span>\n                                        <span class=\"n\">ui<\/span><span class=\"nf\">.label<\/span><span class=\"p\">(<\/span><span class=\"n\">pet<\/span><span class=\"py\">.id<\/span><span class=\"nf\">.to_string<\/span><span class=\"p\">());<\/span>\n                                        <span class=\"n\">ui<\/span><span class=\"nf\">.label<\/span><span class=\"p\">(<\/span><span class=\"o\">&amp;<\/span><span class=\"n\">pet<\/span><span class=\"py\">.name<\/span><span class=\"p\">);<\/span>\n                                        <span class=\"n\">ui<\/span><span class=\"nf\">.label<\/span><span class=\"p\">(<\/span><span class=\"n\">pet<\/span><span class=\"py\">.age<\/span><span class=\"nf\">.to_string<\/span><span class=\"p\">());<\/span>\n                                        <span class=\"n\">ui<\/span><span class=\"nf\">.label<\/span><span class=\"p\">(<\/span><span class=\"o\">&amp;<\/span><span class=\"n\">pet<\/span><span class=\"py\">.kind<\/span><span class=\"na\">.0<\/span><span class=\"p\">);<\/span>\n                                    <span class=\"p\">});<\/span>\n                                <span class=\"p\">});<\/span>\n                                <span class=\"n\">ui<\/span><span class=\"nf\">.separator<\/span><span class=\"p\">();<\/span>\n                                <span class=\"k\">if<\/span> <span class=\"k\">let<\/span> <span class=\"nf\">Some<\/span><span class=\"p\">(<\/span><span class=\"k\">ref<\/span> <span class=\"n\">pet_image<\/span><span class=\"p\">)<\/span> <span class=\"o\">=<\/span> <span class=\"k\">self<\/span><span class=\"py\">.app_state.pet_image<\/span> <span class=\"p\">{<\/span>\n                                    <span class=\"n\">ui<\/span><span class=\"nf\">.add<\/span><span class=\"p\">(<\/span><span class=\"nn\">egui<\/span><span class=\"p\">::<\/span><span class=\"nn\">Image<\/span><span class=\"p\">::<\/span><span class=\"nf\">from_uri<\/span><span class=\"p\">(<\/span><span class=\"n\">pet_image<\/span><span class=\"p\">)<\/span><span class=\"nf\">.max_width<\/span><span class=\"p\">(<\/span><span class=\"mf\">200.0<\/span><span class=\"p\">));<\/span>\n                                <span class=\"p\">}<\/span>\n                            <span class=\"p\">});<\/span>\n                        <span class=\"p\">});<\/span>\n                    <span class=\"p\">}<\/span> <span class=\"k\">else<\/span> <span class=\"p\">{<\/span>\n                        <span class=\"n\">ui<\/span><span class=\"nf\">.label<\/span><span class=\"p\">(<\/span><span class=\"s\">\"No pet selected.\"<\/span><span class=\"p\">);<\/span>\n                    <span class=\"p\">}<\/span>\n                <span class=\"p\">});<\/span>\n            <span class=\"p\">});<\/span>\n        <span class=\"p\">});<\/span>\n    <span class=\"p\">}<\/span>\n<span class=\"p\">}<\/span>\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<p>\u0645\u0627 \u0631\u0646\u062f\u0631 \u0645\u06cc \u06a9\u0646\u06cc\u0645 <code>Details<\/code> \u0639\u0646\u0648\u0627\u0646 \u0648 <code>delete<\/code> \u062f\u06a9\u0645\u0647 \u0627\u06af\u0631 \u062f\u06a9\u0645\u0647 \u06a9\u0644\u06cc\u06a9 \u0634\u0648\u062f\u060c \u0631\u0648\u06cc\u062f\u0627\u062f \u062d\u0630\u0641 \u0631\u0627 \u0628\u0647 \u0631\u0634\u062a\u0647 \u067e\u0633 \u0632\u0645\u06cc\u0646\u0647 \u0627\u0631\u0633\u0627\u0644 \u0645\u06cc \u06a9\u0646\u06cc\u0645. \u0633\u067e\u0633 \u0628\u0647 \u0633\u0627\u062f\u06af\u06cc \u062c\u0632\u0626\u06cc\u0627\u062a \u062d\u06cc\u0648\u0627\u0646 \u062e\u0627\u0646\u06af\u06cc \u0631\u0627 \u0631\u0646\u062f\u0631 \u0645\u06cc \u06a9\u0646\u06cc\u0645 \u0648 \u062f\u0631 \u0646\u0647\u0627\u06cc\u062a \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc \u06a9\u0646\u06cc\u0645 <code>egui::image::from_uri<\/code>\u060c \u06a9\u0647 \u0627\u0632 \u0645\u0648\u0627\u0631\u062f \u0630\u06a9\u0631 \u0634\u062f\u0647 \u062f\u0631 \u0628\u0627\u0644\u0627 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc \u06a9\u0646\u062f <code>egui_extras<\/code> \u0628\u0631\u0627\u06cc \u0648\u0627\u06a9\u0634\u06cc \u062a\u0635\u0648\u06cc\u0631 \u0627\u0632 URL \u062f\u0627\u062f\u0647 \u0634\u062f\u0647\u060c \u0646\u0634\u0627\u0646\u06af\u0631 \u0628\u0627\u0631\u06af\u06cc\u0631\u06cc \u0631\u0627 \u062f\u0631 \u0627\u06cc\u0646 \u0641\u0627\u0635\u0644\u0647 \u0646\u0634\u0627\u0646 \u0645\u06cc \u062f\u0647\u062f. <\/p>\n<p>\u0627\u06af\u0631 \u062d\u06cc\u0648\u0627\u0646 \u062e\u0627\u0646\u06af\u06cc \u0627\u0646\u062a\u062e\u0627\u0628 \u0646\u0634\u062f\u0647 \u0628\u0627\u0634\u062f\u060c \u0628\u0647 \u0633\u0627\u062f\u06af\u06cc \u06cc\u06a9 \u0628\u0631\u0686\u0633\u0628 \u0646\u0634\u0627\u0646 \u0645\u06cc \u062f\u0647\u06cc\u0645. <\/p>\n<p>\u0627\u06cc\u0646 \u0628\u0631\u0627\u06cc \u0633\u0627\u062e\u062a\u0646 \u0631\u0627\u0628\u0637 \u06a9\u0627\u0631\u0628\u0631\u06cc \u0627\u0633\u062a. \u062e\u06cc\u0644\u06cc \u0633\u0627\u062f\u0647\u060c \u062f\u0631\u0633\u062a \u0627\u0633\u062a\u061f <\/p>\n<p>\u0645\u06cc \u062a\u0648\u0627\u0646 \u0633\u0627\u062e\u062a \u06cc\u06a9 \u0628\u0631\u0646\u0627\u0645\u0647 \u067e\u06cc\u0686\u06cc\u062f\u0647 \u0648 \u062a\u0648\u062f\u0631\u062a\u0648 \u0628\u0627 \u0627\u06cc\u0646 \u0645\u0648\u0627\u0631\u062f \u0627\u0648\u0644\u06cc\u0647 \u0631\u0627 \u062a\u0635\u0648\u0631 \u06a9\u0631\u062f\u060c \u0628\u062e\u0634 \u0647\u0627\u06cc \u0645\u062e\u062a\u0644\u0641 \u0631\u0627 \u062f\u0631 \u0645\u0627\u0698\u0648\u0644 \u0647\u0627\u06cc \u0645\u062e\u062a\u0644\u0641 \u0633\u0627\u062e\u062a\u0627\u0631 \u062f\u0627\u062f \u0648 \u0622\u0646 \u0631\u0627 \u062f\u0631 \u0644\u0628\u0647 \u0647\u0627\u06cc \u062a\u0639\u0627\u0645\u0644 \u062f\u0631 \u062c\u0631\u06cc\u0627\u0646 \u06a9\u0627\u0631\u0628\u0631 \u06a9\u0646\u0627\u0631 \u0647\u0645 \u0642\u0631\u0627\u0631 \u062f\u0627\u062f. <\/p>\n<p>\u0627\u06cc\u0646 \u0631\u0648\u0634 \u0631\u0646\u062f\u0631 \u0628\u0627\u0639\u062b \u0645\u06cc \u0634\u0648\u062f <code>egui<\/code> \u0646\u0633\u06cc\u0645\u06cc \u0628\u0631\u0627\u06cc \u06a9\u0627\u0631 \u0648 \u0634\u0631\u0648\u0639. <\/p>\n<p>\u0628\u06cc\u0627\u06cc\u06cc\u062f \u0628\u0628\u06cc\u0646\u06cc\u0645 \u06a9\u0647 \u0622\u06cc\u0627 \u0622\u0646\u0686\u0647 \u0645\u0627 \u067e\u06cc\u0627\u062f\u0647 \u0633\u0627\u0632\u06cc \u06a9\u0631\u062f\u06cc\u0645 \u0648\u0627\u0642\u0639\u0627\u064b \u06a9\u0627\u0631 \u0645\u06cc \u06a9\u0646\u062f \u06cc\u0627 \u062e\u06cc\u0631.<\/p>\n<h2><span class=\"ez-toc-section\" id=\"%D8%AA%D8%B3%D8%AA_%DA%A9%D8%B1%D8%AF%D9%86\"><\/span>\n<p>  \u062a\u0633\u062a \u06a9\u0631\u062f\u0646<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>\u0645\u0627 \u0645\u06cc \u062a\u0648\u0627\u0646\u06cc\u0645 \u0628\u0631\u0646\u0627\u0645\u0647 \u0631\u0627 \u0628\u0627 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 \u0622\u0646 \u0627\u062c\u0631\u0627 \u06a9\u0646\u06cc\u0645 <code>RUST_LOG=info cargo run<\/code>\u060c \u06a9\u0647 \u06cc\u06a9 \u0631\u0627\u0628\u0637 \u06a9\u0627\u0631\u0628\u0631\u06cc \u06af\u0631\u0627\u0641\u06cc\u06a9\u06cc \u0628\u0647 \u0634\u06a9\u0644 \u0632\u06cc\u0631 \u0628\u0627\u0632 \u0645\u06cc \u06a9\u0646\u062f: <img decoding=\"async\" src=\"https:\/\/media.dev.to\/cdn-cgi\/image\/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto\/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Frjnqv9nd1pkplrybkkce.png\" alt=\"\u0627\u0633\u06a9\u0631\u06cc\u0646 \u0634\u0627\u062a \u0627\u0632 \u0648\u0636\u0639\u06cc\u062a \u0627\u0648\u0644\u06cc\u0647 \u0628\u0631\u0646\u0627\u0645\u0647 GUI PetApp \u06a9\u0647 \u0628\u0627 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 egui \u0627\u06cc\u062c\u0627\u062f \u0634\u062f\u0647 \u0627\u0633\u062a. \u0631\u0627\u0628\u0637 \u06a9\u0627\u0631\u0628\u0631\u06cc \u06cc\u06a9 \u0637\u0631\u062d \u062d\u062f\u0627\u0642\u0644\u06cc \u0631\u0627 \u0628\u0627 \u0644\u06cc\u0633\u062a\u06cc \u0627\u0632 \u062d\u06cc\u0648\u0627\u0646\u0627\u062a \u062e\u0627\u0646\u06af\u06cc \u062f\u0631 \u0633\u0645\u062a \u0686\u067e \u0646\u0634\u0627\u0646 \u0645\u06cc\u200c\u062f\u0647\u062f\u060c \u0634\u0627\u0645\u0644 \u06af\u0632\u06cc\u0646\u0647\u200c\u0647\u0627\u06cc\u06cc \u0628\u0631\u0627\u06cc \u00ab\u0627\u0641\u0632\u0648\u062f\u0646 \u062d\u06cc\u0648\u0627\u0646 \u062e\u0627\u0646\u06af\u06cc \u062c\u062f\u06cc\u062f\u00bb \u0648 \u06cc\u06a9 \u067e\u0627\u0646\u0644 \u062c\u0632\u0626\u06cc\u0627\u062a \u062f\u0631 \u0633\u0645\u062a \u0631\u0627\u0633\u062a \u06a9\u0647 \u062f\u0631 \u062d\u0627\u0644 \u062d\u0627\u0636\u0631 \u00ab\u062d\u06cc\u0648\u0627\u0646 \u062e\u0627\u0646\u06af\u06cc \u0627\u0646\u062a\u062e\u0627\u0628 \u0646\u0634\u062f\u0647\u00bb \u0631\u0627 \u0646\u0634\u0627\u0646 \u0645\u06cc\u200c\u062f\u0647\u062f. \u0627\u06cc\u0646 \u062a\u0635\u0648\u06cc\u0631 \u062a\u0646\u0638\u06cc\u0645\u0627\u062a \u0627\u0648\u0644\u06cc\u0647 \u0648 \u062a\u062c\u0631\u0628\u0647 \u06a9\u0627\u0631\u0628\u0631\u06cc \u0631\u0627 \u062f\u0631 \u0627\u0648\u0644\u06cc\u0646 \u0631\u0627\u0647\u200c\u0627\u0646\u062f\u0627\u0632\u06cc PetApp \u0646\u0634\u0627\u0646 \u0645\u06cc\u200c\u062f\u0647\u062f \u0648 \u062a\u0648\u0627\u0646\u0627\u06cc\u06cc egui \u0628\u0631\u0627\u06cc \u0627\u06cc\u062c\u0627\u062f \u0631\u0627\u0628\u0637\u200c\u0647\u0627\u06cc \u062a\u0645\u06cc\u0632 \u0648 \u06a9\u0627\u0631\u0628\u0631\u067e\u0633\u0646\u062f \u062f\u0631 Rust \u0631\u0627 \u0628\u0631\u062c\u0633\u062a\u0647 \u0645\u06cc\u200c\u06a9\u0646\u062f.\" loading=\"lazy\" width=\"800\" height=\"141\" title=\"\">   <\/p>\n<p>\u0645\u0627 \u0645\u06cc \u062a\u0648\u0627\u0646\u06cc\u0645 \u06cc\u06a9\u06cc \u0627\u0632 \u062d\u06cc\u0648\u0627\u0646\u0627\u062a \u062e\u0627\u0646\u06af\u06cc \u0631\u0627 \u062f\u0631 \u062d\u0627\u0644\u062a \u0627\u0648\u0644\u06cc\u0647 \u0627\u0646\u062a\u062e\u0627\u0628 \u06a9\u0646\u06cc\u0645 \u0648 \u062c\u0632\u0626\u06cc\u0627\u062a \u0622\u0646 \u062f\u0631 \u0633\u0645\u062a \u0631\u0627\u0633\u062a \u0646\u0634\u0627\u0646 \u062f\u0627\u062f\u0647 \u0645\u06cc \u0634\u0648\u062f. \u0647\u0645\u0686\u0646\u06cc\u0646 \u06cc\u06a9 \u0646\u0634\u0627\u0646\u06af\u0631 \u0628\u0627\u0631\u06af\u06cc\u0631\u06cc \u06a9\u0648\u062a\u0627\u0647 \u0631\u0627 \u0645\u0634\u0627\u0647\u062f\u0647 \u062e\u0648\u0627\u0647\u06cc\u062f \u06a9\u0631\u062f \u06a9\u0647 \u062f\u0631 \u0622\u0646 \u062a\u0635\u0648\u06cc\u0631 \u062a\u0635\u0627\u062f\u0641\u06cc \u06cc\u06a9 \u06af\u0631\u0628\u0647 \u067e\u0633 \u0627\u0632 \u0645\u062f\u062a \u06a9\u0648\u062a\u0627\u0647\u06cc \u0638\u0627\u0647\u0631 \u0645\u06cc \u0634\u0648\u062f. \u0627\u06cc\u0646 \u0631\u0641\u062a\u0627\u0631 \u067e\u06cc\u0634\u200c\u0641\u0631\u0636 \u0639\u0645\u0644\u06a9\u0631\u062f \u0628\u0627\u0631\u06af\u06cc\u0631\u06cc \u062a\u0635\u0648\u06cc\u0631 \u062f\u0631 \u0628\u0627\u0644\u0627 \u0627\u0633\u062a <code>egui_extras<\/code>: <\/p>\n<p><img decoding=\"async\" src=\"https:\/\/media.dev.to\/cdn-cgi\/image\/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto\/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fif9e7qx3p7hw7quw08u3.png\" alt=\"\u0627\u0633\u06a9\u0631\u06cc\u0646 \u0634\u0627\u062a \u0627\u0632 GUI PetApp \u0628\u0627 \u062c\u0632\u0626\u06cc\u0627\u062a \u06cc\u06a9 \u062d\u06cc\u0648\u0627\u0646 \u062e\u0627\u0646\u06af\u06cc \u0627\u0646\u062a\u062e\u0627\u0628\u06cc \u0646\u0645\u0627\u06cc\u0634 \u062f\u0627\u062f\u0647 \u0634\u062f\u0647 \u0627\u0633\u062a. \u0631\u0627\u0628\u0637\u060c \u062d\u06cc\u0648\u0627\u0646 \u062e\u0627\u0646\u06af\u06cc \" loading=\"lazy\" width=\"800\" height=\"247\" PetApp egui title=\"\">   <\/p>\n<p>\u062f\u0631 \u062d\u0627\u0644\u062a \u0627\u0648\u0644\u06cc\u0647 \u06a9\u0647 \u0645\u0627 \u06cc\u06a9 \u062a\u0635\u0648\u06cc\u0631 \u062a\u0635\u0627\u062f\u0641\u06cc \u0633\u06af \u0631\u0627 \u0627\u0632 \u0633\u0627\u06cc\u062a \u062f\u06cc\u06af\u0631\u06cc \u062f\u0631\u06cc\u0627\u0641\u062a \u0645\u06cc \u06a9\u0646\u06cc\u0645\u060c \u0647\u0645\u06cc\u0646 \u06a9\u0627\u0631 \u0628\u0631\u0627\u06cc \u0633\u06af \u0627\u0646\u062c\u0627\u0645 \u0645\u06cc \u0634\u0648\u062f: <img decoding=\"async\" src=\"https:\/\/media.dev.to\/cdn-cgi\/image\/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto\/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F22iogvzqoovacstedptg.png\" alt=\"\u0627\u0633\u06a9\u0631\u06cc\u0646 \u0634\u0627\u062a \u0627\u0632 \u0631\u0627\u0628\u0637 \u06a9\u0627\u0631\u0628\u0631\u06cc \u06af\u0631\u0627\u0641\u06cc\u06a9\u06cc PetApp \u0628\u0627 \u0627\u0646\u062a\u062e\u0627\u0628 \u062d\u06cc\u0648\u0627\u0646 \u062e\u0627\u0646\u06af\u06cc \" loading=\"lazy\" width=\"800\" height=\"234\" PetApp egui title=\"\">   <\/p>\n<p>\u062f\u0631 \u0645\u0631\u062d\u0644\u0647 \u0628\u0639\u062f\u060c \u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u06cc\u0645 \u0633\u0639\u06cc \u06a9\u0646\u06cc\u0645 \u0628\u0627 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 \u062f\u06a9\u0645\u0647\u060c \u06cc\u06a9 \u062d\u06cc\u0648\u0627\u0646 \u062e\u0627\u0646\u06af\u06cc \u062c\u062f\u06cc\u062f \u0631\u0627 \u0628\u0647 \u0644\u06cc\u0633\u062a \u0627\u0636\u0627\u0641\u0647 \u06a9\u0646\u06cc\u0645\u060c \u0648 \u0634\u06a9\u0644\u06cc \u06a9\u0647 \u0628\u0627 \u06a9\u0644\u06cc\u06a9 \u062f\u0631 \u067e\u0627\u0646\u0644 \u067e\u06cc\u0645\u0627\u06cc\u0634 \u062f\u0631 \u0633\u0645\u062a \u0686\u067e \u0646\u0634\u0627\u0646 \u0645\u06cc\u200c\u062f\u0647\u062f: <img decoding=\"async\" src=\"https:\/\/media.dev.to\/cdn-cgi\/image\/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto\/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fi18djdda2bfcad5w3evb.png\" alt=\"\u062a\u0635\u0648\u06cc\u0631\u06cc \u0627\u0632 \u0631\u0627\u0628\u0637 \u06a9\u0627\u0631\u0628\u0631\u06cc \u06af\u0631\u0627\u0641\u06cc\u06a9\u06cc PetApp \u06a9\u0647 \u062f\u0631 \u0622\u0646 \u06cc\u06a9 \u062d\u06cc\u0648\u0627\u0646 \u062e\u0627\u0646\u06af\u06cc \u062c\u062f\u06cc\u062f \u062f\u0631 \u062d\u0627\u0644 \u0627\u0636\u0627\u0641\u0647 \u0634\u062f\u0646 \u0627\u0633\u062a. \u0631\u0627\u0628\u0637 \u06cc\u06a9 \u0641\u0631\u0645 \u0631\u0627 \u062f\u0631 \u0633\u0645\u062a \u0686\u067e \u0628\u0627 \u0641\u06cc\u0644\u062f\u0647\u0627\u06cc\u06cc \u0628\u0631\u0627\u06cc \u0646\u0627\u0645\u060c \u0633\u0646 \u0648 \u0646\u0648\u0639 \u062d\u06cc\u0648\u0627\u0646 \u062e\u0627\u0646\u06af\u06cc \u0646\u0634\u0627\u0646 \u0645\u06cc \u062f\u0647\u062f\u060c \u062f\u0631 \u062d\u0627\u0644\u06cc \u06a9\u0647 \u067e\u0627\u0646\u0644 \u062c\u0632\u0626\u06cc\u0627\u062a \u062f\u0631 \u0633\u0645\u062a \u0631\u0627\u0633\u062a \u0647\u0646\u0648\u0632 \u062d\u06cc\u0648\u0627\u0646 \u062e\u0627\u0646\u06af\u06cc \u0627\u0646\u062a\u062e\u0627\u0628 \u0634\u062f\u0647 \u0642\u0628\u0644\u06cc\u060c \" loading=\"lazy\" width=\"800\" height=\"212\" PetApp egui title=\"\">   <\/p>\n<p>\u0648 \u06cc\u06a9\u0628\u0627\u0631 \u0632\u062f\u06cc\u0645 <code>Submit<\/code>\u060c \u0641\u0631\u0645 \u0628\u0627\u0632\u0646\u0634\u0627\u0646\u06cc \u0645\u06cc \u0634\u0648\u062f \u0648 \u06cc\u06a9 \u062d\u06cc\u0648\u0627\u0646 \u062e\u0627\u0646\u06af\u06cc \u062c\u062f\u06cc\u062f \u0628\u0647 \u0644\u06cc\u0633\u062a \u0627\u0636\u0627\u0641\u0647 \u0645\u06cc \u0634\u0648\u062f \u0648 \u0628\u0647 \u0622\u062f\u0631\u0633 \u0632\u06cc\u0631 \u0647\u062f\u0627\u06cc\u062a \u0645\u06cc \u0634\u0648\u062f: <img decoding=\"async\" src=\"https:\/\/media.dev.to\/cdn-cgi\/image\/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto\/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fwllumcbr7s64bi44txpy.png\" alt=\"\u062a\u0635\u0648\u06cc\u0631 \u0635\u0641\u062d\u0647\u200c\u0646\u0645\u0627\u06cc\u0634 \u0631\u0627\u0628\u0637 \u06a9\u0627\u0631\u0628\u0631\u06cc \u06af\u0631\u0627\u0641\u06cc\u06a9\u06cc PetApp \u06a9\u0647 \u06cc\u06a9 \u062d\u06cc\u0648\u0627\u0646 \u062e\u0627\u0646\u06af\u06cc \u062a\u0627\u0632\u0647 \u0627\u0636\u0627\u0641\u0647 \u0634\u062f\u0647 \u00ab\u06a9\u0627\u0631\u0644\u0648\u0633\u00bb \u0627\u0646\u062a\u062e\u0627\u0628 \u0634\u062f\u0647 \u0627\u0632 \u0641\u0647\u0631\u0633\u062a \u0631\u0627 \u0646\u0634\u0627\u0646 \u0645\u06cc\u200c\u062f\u0647\u062f. \u067e\u0627\u0646\u0644 \u062c\u0632\u0626\u06cc\u0627\u062a \u062f\u0631 \u0633\u0645\u062a \u0631\u0627\u0633\u062a \u0627\u0637\u0644\u0627\u0639\u0627\u062a \u062d\u06cc\u0648\u0627\u0646 \u062e\u0627\u0646\u06af\u06cc \u0627\u0632 \u062c\u0645\u0644\u0647 \u0634\u0646\u0627\u0633\u0647\u060c \u0646\u0627\u0645\u060c \u0633\u0646 \u0648 \u0646\u0648\u0639 (\u06af\u0631\u0628\u0647) \u0631\u0627 \u0628\u0647 \u0647\u0645\u0631\u0627\u0647 \u06cc\u06a9 \u062a\u0635\u0648\u06cc\u0631 \u062a\u0635\u0627\u062f\u0641\u06cc \u0627\u0632 \u06cc\u06a9 \u06af\u0631\u0628\u0647 \u0646\u0634\u0627\u0646 \u0645\u06cc \u062f\u0647\u062f. \u0627\u06a9\u0646\u0648\u0646 \u0641\u0631\u0645 \u0627\u0636\u0627\u0641\u0647 \u06a9\u0631\u062f\u0646 \u062d\u06cc\u0648\u0627\u0646 \u062e\u0627\u0646\u06af\u06cc \u062c\u062f\u06cc\u062f \u062f\u0631 \u0633\u0645\u062a \u0686\u067e \u067e\u0627\u06a9 \u0634\u062f\u0647 \u0627\u0633\u062a. \u0627\u06cc\u0646 \u062a\u0635\u0648\u06cc\u0631 \u0627\u0641\u0632\u0648\u062f\u0646 \u0648 \u0646\u0645\u0627\u06cc\u0634 \u0645\u0648\u0641\u0642\u06cc\u062a \u0622\u0645\u06cc\u0632 \u06cc\u06a9 \u062d\u06cc\u0648\u0627\u0646 \u062e\u0627\u0646\u06af\u06cc \u062c\u062f\u06cc\u062f \u062f\u0631 PetApp \u0631\u0627 \u0646\u0634\u0627\u0646 \u0645\u06cc \u062f\u0647\u062f \u0648 \u0627\u062f\u063a\u0627\u0645 \u06cc\u06a9\u067e\u0627\u0631\u0686\u0647 \u0648\u0631\u0648\u062f\u06cc \u0647\u0627\u06cc \u062c\u062f\u06cc\u062f \u0628\u0631\u0646\u0627\u0645\u0647 \u0628\u0627 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 egui \u0631\u0627 \u0646\u0634\u0627\u0646 \u0645\u06cc \u062f\u0647\u062f.\" loading=\"lazy\" width=\"800\" height=\"219\" title=\"\">   <\/p>\n<p>\u062e\u0648\u0628 \u0627\u0633\u062a\u060c \u06a9\u0627\u0631 \u0645\u06cc \u06a9\u0646\u062f! \u0645\u06cc \u062a\u0648\u0627\u0646\u0633\u062a\u06cc\u0645 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0646\u06cc\u0645 <code>Context::set_style<\/code> \u0647\u0645\u0627\u0646\u0637\u0648\u0631 \u06a9\u0647 \u062f\u0631 \u0627\u0628\u062a\u062f\u0627 \u0630\u06a9\u0631 \u0634\u062f \u0628\u0631\u0627\u06cc \u0634\u062e\u0635\u06cc \u0633\u0627\u0632\u06cc \u06a9\u0627\u0645\u0644 \u0628\u0631\u0646\u0627\u0645\u0647 \u0627\u0632 \u0646\u0638\u0631 \u0641\u0648\u0646\u062a \u0647\u0627\u060c \u0631\u0646\u06af \u0647\u0627 \u0648 \u0645\u0648\u0627\u0631\u062f \u0645\u0634\u0627\u0628\u0647\u060c \u0627\u0645\u0627 \u0628\u0647 \u0646\u0638\u0631 \u0645\u0646\u060c \u062d\u062a\u06cc \u0633\u0628\u06a9 \u067e\u06cc\u0634 \u0641\u0631\u0636 \u0646\u06cc\u0632 \u0628\u0633\u06cc\u0627\u0631 \u0632\u06cc\u0628\u0627 \u0628\u0647 \u0646\u0638\u0631 \u0645\u06cc \u0631\u0633\u062f\u060c \u0628\u0647 \u062e\u0635\u0648\u0635 \u0632\u0645\u0627\u0646\u06cc \u06a9\u0647 \u0645\u0627 \u0641\u0642\u0637 \u0642\u0635\u062f \u062f\u0627\u0631\u06cc\u0645 \u06cc\u06a9 \u0628\u0631\u0646\u0627\u0645\u0647 \u0646\u0645\u0648\u0646\u0647 \u0628\u0633\u0627\u0632\u06cc\u0645. \u06a9\u062f \u06a9\u0627\u0645\u0644 \u0627\u06cc\u0646 \u0645\u062b\u0627\u0644 \u0631\u0627 \u0645\u06cc \u062a\u0648\u0627\u0646\u06cc\u062f \u062f\u0631 GitHub \u067e\u06cc\u062f\u0627 \u06a9\u0646\u06cc\u062f.<\/p>\n<h2><span class=\"ez-toc-section\" id=\"%D9%86%D8%AA%DB%8C%D8%AC%D9%87_%DA%AF%DB%8C%D8%B1%DB%8C\"><\/span>\n<p>  \u0646\u062a\u06cc\u062c\u0647 \u06af\u06cc\u0631\u06cc<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>\u062f\u0631 \u0627\u06cc\u0646 \u0645\u0642\u0627\u0644\u0647\u060c \u0645\u0627 \u0646\u06af\u0627\u0647\u06cc \u0628\u0647 \u0646\u062d\u0648\u0647 \u0633\u0627\u062e\u062a \u0628\u0631\u0646\u0627\u0645\u0647\u200c\u0647\u0627\u06cc \u0631\u0627\u0628\u0637 \u06a9\u0627\u0631\u0628\u0631\u06cc \u06af\u0631\u0627\u0641\u06cc\u06a9\u06cc \u0628\u0627 \u062d\u0627\u0644\u062a \u0641\u0648\u0631\u06cc \u06a9\u0631\u0627\u0633 \u067e\u0644\u062a\u0641\u0631\u0645 \u0628\u0627 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 egui \u0648 eframe \u062f\u0631 Rust \u0627\u0646\u062f\u0627\u062e\u062a\u06cc\u0645. <\/p>\n<p>\u0627\u06af\u0631\u0686\u0647 egui \u06cc\u06a9 \u06a9\u062a\u0627\u0628\u062e\u0627\u0646\u0647 \u0646\u0633\u0628\u062a\u0627\u064b \u062c\u062f\u06cc\u062f \u0628\u0631\u0627\u06cc \u0627\u06cc\u062c\u0627\u062f \u0631\u0627\u0628\u0637 \u06a9\u0627\u0631\u0628\u0631\u06cc \u06af\u0631\u0627\u0641\u06cc\u06a9\u06cc \u0627\u0633\u062a\u060c \u0627\u06a9\u0648\u0633\u06cc\u0633\u062a\u0645 \u0627\u0637\u0631\u0627\u0641 \u0622\u0646 \u0639\u0627\u0644\u06cc \u0627\u0633\u062a \u0648 \u062e\u06cc\u0644\u06cc \u0633\u0631\u06cc\u0639 \u062f\u0631 \u062d\u0627\u0644 \u0631\u0634\u062f \u0627\u0633\u062a. \u0634\u0631\u0648\u0639 \u0628\u0647 \u06a9\u0627\u0631 \u0628\u0647 \u062f\u0644\u06cc\u0644 \u0627\u0633\u0646\u0627\u062f \u062e\u0648\u0628 \u0648 \u0628\u0631\u0646\u0627\u0645\u0647\u200c\u0647\u0627\u06cc \u0622\u0632\u0645\u0627\u06cc\u0634\u06cc \u0641\u0631\u0627\u0648\u0627\u0646 \u06a9\u0647 \u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u06cc\u062f \u06a9\u062f \u0645\u0646\u0628\u0639 \u0631\u0627 \u0628\u0631\u0631\u0633\u06cc \u06a9\u0646\u06cc\u062f \u0648 \u0627\u0632 \u0622\u0646\u200c\u0647\u0627 \u0628\u06cc\u0627\u0645\u0648\u0632\u06cc\u062f\u060c \u0628\u0633\u06cc\u0627\u0631 \u0622\u0633\u0627\u0646 \u0627\u0633\u062a. <\/p>\n<p>\u062f\u0631 \u0627\u06cc\u0646 \u0645\u0631\u062d\u0644\u0647\u060c \u0627\u06af\u0631 \u0628\u062e\u0648\u0627\u0647\u0645 \u06cc\u06a9 \u0628\u0631\u0646\u0627\u0645\u0647 \u0631\u0627\u0628\u0637 \u06a9\u0627\u0631\u0628\u0631\u06cc \u06af\u0631\u0627\u0641\u06cc\u06a9\u06cc \u0628\u0627 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 Rust \u0628\u0633\u0627\u0632\u0645\u060c egui \u0627\u0648\u0644\u06cc\u0646 \u0627\u0646\u062a\u062e\u0627\u0628 \u0645\u0646 \u0628\u0631\u0627\u06cc \u0627\u0646\u062c\u0627\u0645 \u0627\u06cc\u0646 \u06a9\u0627\u0631 \u062e\u0648\u0627\u0647\u062f \u0628\u0648\u062f.<\/p>\n<hr\/>\n<h2><span class=\"ez-toc-section\" id=\"LogRocket_%D8%AF%DB%8C%D8%AF_%DA%A9%D8%A7%D9%85%D9%84_%D8%AF%D8%B1_%D8%B5%D9%81%D8%AD%D8%A7%D8%AA_%D9%88%D8%A8_%D8%A8%D8%B1%D8%A7%DB%8C_%D8%A8%D8%B1%D9%86%D8%A7%D9%85%D9%87_%D9%87%D8%A7%DB%8C_Rust\"><\/span>\n<p>  LogRocket: \u062f\u06cc\u062f \u06a9\u0627\u0645\u0644 \u062f\u0631 \u0635\u0641\u062d\u0627\u062a \u0648\u0628 \u0628\u0631\u0627\u06cc \u0628\u0631\u0646\u0627\u0645\u0647 \u0647\u0627\u06cc Rust<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>\u0627\u0634\u06a9\u0627\u0644 \u0632\u062f\u0627\u06cc\u06cc \u0628\u0631\u0646\u0627\u0645\u0647 \u0647\u0627\u06cc Rust \u0645\u06cc \u062a\u0648\u0627\u0646\u062f \u062f\u0634\u0648\u0627\u0631 \u0628\u0627\u0634\u062f\u060c \u0628\u0647 \u062e\u0635\u0648\u0635 \u0632\u0645\u0627\u0646\u06cc \u06a9\u0647 \u06a9\u0627\u0631\u0628\u0631\u0627\u0646 \u0645\u0634\u06a9\u0644\u0627\u062a\u06cc \u0631\u0627 \u062a\u062c\u0631\u0628\u0647 \u0645\u06cc \u06a9\u0646\u0646\u062f \u06a9\u0647 \u0628\u0627\u0632\u062a\u0648\u0644\u06cc\u062f \u0622\u0646 \u0647\u0627 \u062f\u0634\u0648\u0627\u0631 \u0627\u0633\u062a. \u0627\u06af\u0631 \u0639\u0644\u0627\u0642\u0647 \u0645\u0646\u062f \u0628\u0647 \u0646\u0638\u0627\u0631\u062a \u0648 \u0631\u062f\u06cc\u0627\u0628\u06cc \u0639\u0645\u0644\u06a9\u0631\u062f \u0628\u0631\u0646\u0627\u0645\u0647 \u0647\u0627\u06cc Rust \u062e\u0648\u062f\u060c \u0646\u0645\u0627\u06cc\u0634 \u062e\u0648\u062f\u06a9\u0627\u0631 \u062e\u0637\u0627\u0647\u0627\u060c \u0648 \u067e\u06cc\u06af\u06cc\u0631\u06cc \u062f\u0631\u062e\u0648\u0627\u0633\u062a \u0647\u0627\u06cc \u0634\u0628\u06a9\u0647 \u0648 \u0632\u0645\u0627\u0646 \u0628\u0627\u0631\u06af\u0630\u0627\u0631\u06cc \u06a9\u0646\u062f \u0647\u0633\u062a\u06cc\u062f\u060c LogRocket \u0631\u0627 \u0627\u0645\u062a\u062d\u0627\u0646 \u06a9\u0646\u06cc\u062f.<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/media.dev.to\/cdn-cgi\/image\/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto\/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fgytow1cup40vuqnyvwdl.png\" alt=\"\u062b\u0628\u062a \u0646\u0627\u0645 LogRocket\" loading=\"lazy\" width=\"800\" height=\"451\" title=\"\"><\/p>\n<p>LogRocket \u0645\u0627\u0646\u0646\u062f \u06cc\u06a9 DVR \u0628\u0631\u0627\u06cc \u0628\u0631\u0646\u0627\u0645\u0647 \u0647\u0627\u06cc \u0648\u0628 \u0648 \u062a\u0644\u0641\u0646 \u0647\u0645\u0631\u0627\u0647 \u0627\u0633\u062a \u06a9\u0647 \u0628\u0647 \u0645\u0639\u0646\u0627\u06cc \u0648\u0627\u0642\u0639\u06cc \u06a9\u0644\u0645\u0647 \u0647\u0631 \u0686\u06cc\u0632\u06cc \u0631\u0627 \u06a9\u0647 \u062f\u0631 \u0628\u0631\u0646\u0627\u0645\u0647 Rust \u0634\u0645\u0627 \u0627\u062a\u0641\u0627\u0642 \u0645\u06cc \u0627\u0641\u062a\u062f \u0636\u0628\u0637 \u0645\u06cc \u06a9\u0646\u062f. \u0628\u0647 \u062c\u0627\u06cc \u062d\u062f\u0633 \u0632\u062f\u0646 \u0686\u0631\u0627\u06cc\u06cc \u0645\u0634\u06a9\u0644\u0627\u062a\u060c \u0645\u06cc \u062a\u0648\u0627\u0646\u06cc\u062f \u062f\u0631 \u0645\u0648\u0631\u062f \u0648\u0636\u0639\u06cc\u062a\u06cc \u06a9\u0647 \u0628\u0631\u0646\u0627\u0645\u0647 \u0634\u0645\u0627 \u062f\u0631 \u0647\u0646\u06af\u0627\u0645 \u0628\u0631\u0648\u0632 \u0645\u0634\u06a9\u0644 \u062f\u0631 \u0622\u0646 \u0642\u0631\u0627\u0631 \u062f\u0627\u0634\u062a\u060c \u062c\u0645\u0639 \u0622\u0648\u0631\u06cc \u06a9\u0631\u062f\u0647 \u0648 \u06af\u0632\u0627\u0631\u0634 \u062f\u0647\u06cc\u062f. LogRocket \u0647\u0645\u0686\u0646\u06cc\u0646 \u0639\u0645\u0644\u06a9\u0631\u062f \u0628\u0631\u0646\u0627\u0645\u0647 \u0634\u0645\u0627 \u0631\u0627 \u0646\u0638\u0627\u0631\u062a \u0645\u06cc \u06a9\u0646\u062f\u060c \u0645\u0639\u06cc\u0627\u0631\u0647\u0627\u06cc\u06cc \u0645\u0627\u0646\u0646\u062f \u0628\u0627\u0631 CPU \u0645\u0634\u062a\u0631\u06cc\u060c \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 \u062d\u0627\u0641\u0638\u0647 \u0645\u0634\u062a\u0631\u06cc \u0648 \u0645\u0648\u0627\u0631\u062f \u062f\u06cc\u06af\u0631 \u0631\u0627 \u06af\u0632\u0627\u0631\u0634 \u0645\u06cc \u062f\u0647\u062f.<\/p>\n<p>\u0646\u062d\u0648\u0647 \u0627\u0634\u06a9\u0627\u0644 \u0632\u062f\u0627\u06cc\u06cc \u0628\u0631\u0646\u0627\u0645\u0647 \u0647\u0627\u06cc Rust \u062e\u0648\u062f \u0631\u0627 \u0645\u062f\u0631\u0646 \u06a9\u0646\u06cc\u062f &#8211; \u0646\u0638\u0627\u0631\u062a \u0631\u0627 \u0628\u0647 \u0635\u0648\u0631\u062a \u0631\u0627\u06cc\u06af\u0627\u0646 \u0634\u0631\u0648\u0639 \u06a9\u0646\u06cc\u062f.<\/p>\n<\/p><\/div>\n","protected":false},"excerpt":{"rendered":"<p>Summarize this content to 400 words in Persian Lang \u0646\u0648\u0634\u062a\u0647 \u0645\u0627\u0631\u06cc\u0648 \u0632\u0648\u067e\u0627\u0646\u270f\ufe0f \u0627\u0632 \u0632\u0645\u0627\u0646 \u0638\u0647\u0648\u0631 Electron\u060c \u06a9\u0647 \u0645\u0646\u062c\u0631 \u0628\u0647 \u06a9\u0645\u06cc \u0631\u0646\u0633\u0627\u0646\u0633 \u0628\u0631\u0646\u0627\u0645\u0647 \u0647\u0627\u06cc \u062f\u0633\u06a9\u062a\u0627\u067e \u0645\u062a\u0642\u0627\u0628\u0644 \u067e\u0644\u062a \u0641\u0631\u0645 \u0628\u0627 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 \u0641\u0646\u0627\u0648\u0631\u06cc \u0648\u0628 \u0634\u062f\u060c \u0645\u062d\u062f\u0648\u062f\u06cc\u062a \u0647\u0627\u06cc \u0627\u06cc\u0646 \u0631\u0648\u06cc\u06a9\u0631\u062f \u0622\u0634\u06a9\u0627\u0631 \u0634\u062f. \u0632\u0645\u0627\u0646 \u0622\u0647\u0633\u062a\u0647 \u0631\u0627\u0647 \u0627\u0646\u062f\u0627\u0632\u06cc\u060c \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 \u0645\u0646\u0627\u0628\u0639 \u0628\u0633\u06cc\u0627\u0631 \u0628\u0627\u0644\u0627\u060c \u0648 \u0645\u062d\u062f\u0648\u062f\u06cc\u062a \u0647\u0627\u06cc \u0641\u0646\u0627\u0648\u0631\u06cc \u0648\u0628 \u0628\u0631\u0627\u06cc \u0633\u0627\u062e\u062a &hellip;<\/p>\n","protected":false},"author":2,"featured_media":74897,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"fifu_image_url":"","fifu_image_alt":"","footnotes":""},"categories":[339],"tags":[],"class_list":["post-74896","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-dev"],"_links":{"self":[{"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/posts\/74896","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/comments?post=74896"}],"version-history":[{"count":0,"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/posts\/74896\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/media\/74897"}],"wp:attachment":[{"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/media?parent=74896"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/categories?post=74896"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/tags?post=74896"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}