<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Holovanov Oleksandr</title>
    <description>The latest articles on DEV Community by Holovanov Oleksandr (@c0mbit).</description>
    <link>https://dev.to/c0mbit</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F4234240%2Fb2813d3f-c483-429a-9eed-7332fc47f167.jpg</url>
      <title>DEV Community: Holovanov Oleksandr</title>
      <link>https://dev.to/c0mbit</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/c0mbit"/>
    <language>en</language>
    <item>
      <title>I Built a Two-Way Visual UI Editor for Rust Inside VS Code</title>
      <dc:creator>Holovanov Oleksandr</dc:creator>
      <pubDate>Mon, 09 Nov 2026 00:24:45 +0000</pubDate>
      <link>https://dev.to/c0mbit/i-built-a-two-way-visual-ui-editor-for-rust-inside-vs-code-10o0</link>
      <guid>https://dev.to/c0mbit/i-built-a-two-way-visual-ui-editor-for-rust-inside-vs-code-10o0</guid>
      <description>&lt;p&gt;Hey everyone,&lt;/p&gt;

&lt;p&gt;Like a lot of you, I love writing desktop apps in Rust, but I was getting incredibly frustrated with the GUI workflow. Tweaking layout coordinates, compiling, waiting, and realizing a button is still 5 pixels off... it just kills productivity. &lt;/p&gt;

&lt;p&gt;So I decided to build a solution: &lt;strong&gt;Ruxel Studio&lt;/strong&gt;. &lt;br&gt;
It’s an open-source visual drag-and-drop UI editor extension built directly into VS Code.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F1z924fcsmjcir6zna7dk.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F1z924fcsmjcir6zna7dk.png" alt=" " width="800" height="409"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  The Problem with Most Code Generators
&lt;/h2&gt;

&lt;p&gt;Usually, UI builders generate a massive block of boilerplate. If you need to add custom logic to a button click, you have to edit the generated file. But the next time you move that button in the visual editor, the tool regenerates the file and overwrites your custom code. It's a nightmare.&lt;/p&gt;

&lt;h2&gt;
  
  
  How Ruxel Studio Fixes It (Two-Way AST Sync)
&lt;/h2&gt;

&lt;p&gt;Instead of blind generation, Ruxel Studio uses &lt;code&gt;syn&lt;/code&gt; and &lt;code&gt;quote&lt;/code&gt; under the hood for bidirectional AST synchronization. &lt;/p&gt;

&lt;p&gt;Here is what that actually means:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;You can drag and drop a widget on the visual canvas.&lt;/li&gt;
&lt;li&gt;The extension parses your Rust code, finds the exact spot, and safely injects the UI update.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Crucially:&lt;/strong&gt; You can also edit the code manually, and the visual canvas updates instantly to reflect your changes. Your custom event handlers and logic are completely safe.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F3jdzn3pzaaoxkzi78pe2.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F3jdzn3pzaaoxkzi78pe2.png" alt=" " width="800" height="408"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Supported Frameworks
&lt;/h2&gt;

&lt;p&gt;Right now, the extension is in Alpha (v0.1.1) and supports code generation for:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Iced&lt;/li&gt;
&lt;li&gt;egui&lt;/li&gt;
&lt;li&gt;Slint&lt;/li&gt;
&lt;li&gt;Dioxus (Early experimental support)&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Try it out
&lt;/h2&gt;

&lt;p&gt;You can install it right now from the VS Code Marketplace, or check out the source code (MIT / Apache-2.0). &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Marketplace:&lt;/strong&gt; &lt;a href="https://marketplace.visualstudio.com/items?itemName=c0mbit.ruxel-studio" rel="noopener noreferrer"&gt;https://marketplace.visualstudio.com/items?itemName=c0mbit.ruxel-studio&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;GitHub:&lt;/strong&gt; &lt;a href="https://github.com/c0mbit/ruxel-studio" rel="noopener noreferrer"&gt;https://github.com/c0mbit/ruxel-studio&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If you are building desktop apps with any of these frameworks, I would really appreciate any feedback on the generated code structure. Tell me what sucks, what's missing, or what you'd like to see next!&lt;/p&gt;

&lt;p&gt;Cheers,&lt;br&gt;
Alex (c0mbit)&lt;/p&gt;

</description>
      <category>rust</category>
      <category>vscode</category>
      <category>opensource</category>
      <category>showdev</category>
    </item>
  </channel>
</rss>
