Rust’ın performansı ve tek binary olarak dağıtım gibi avantajları nedeniyle CLI/TUI araçlarını Rust ile geliştiren epey kişi olduğunu düşünüyorum.
Python’daki Textual veya JS’deki Ink gibi araçlar sözdizimi açısından görece rahat olsa da, kimi durumlarda çalışma zamanı bağımlılıkları ya da performans ek yükü düşündürebiliyor. Rust tarafında ratatui iyi bir ekosisteme sahip, ancak yerleşim oluşturmak için harcanan süre az değil.
Bu yüzden iki şey yaptım.
1. tui.builders — terminal UI’yi tarayıcıda
Görsel olarak tasarlayıp Rust kodu dışa aktaran bir editör.
https://tui.builders
Widget’ları sürükleyip denetçide özellikleri ayarladığınızda
kod 1:1 olarak üretiliyor:
- denetçi: width=30, padding=2, border=rounded
- kod: .w(30).p(2).border(Border::Rounded)
2. SuperLightTUI — bu 1:1 eşleme için tasarlanmış
Bir Rust TUI kütüphanesi.
CSS flexbox + Tailwind
utility class yaklaşımını kullanıyor; bu yüzden web geliştirme deneyiminiz varsa
ek bir öğrenme süreci olmadan yerleşim kurabilirsiniz.
slt::run(|ui| {
ui.bordered(Border::Rounded).p(2).gap(1).col(|ui| {
ui.text("hello").bold().fg(Color::Cyan);
if ui.button("click").clicked { count += 1; }
});
});
Tek bir closure tüm uygulamayı oluşturuyor. App struct’ı, event loop
veya trait implementasyonu olmadan 3 satırda render alıyorsunuz.
- 2 bağımlılık (
crossterm+unicode-width), 0unsafe - immediate-mode render, ~1ms kare süresi
- 50+ widget (grafik, tablo, görsel, yapay zeka widget’ları vb.)
- editör olmadan yalnızca kütüphaneyle de kullanılabilir
Rust TUI’nin performansını korurken geliştirme hızını da artırmak
isteyenlere faydalı olursa sevinirim.
- tui.builders: https://tui.builders
- GitHub: https://github.com/subinium/SuperLightTUI
- crates.io: cargo add superlighttui
2 yorum
Ratatui kullanırken üşenip bırakmıştım ama bu tam da zayıf noktasını yakalamış! Gerçekten çok iyi lol
Vay canına! Çok güzel!!