11 releases (4 breaking)

Uses new Rust 2024

0.5.1 Sep 28, 2025
0.5.0 Sep 28, 2025
0.4.1 Sep 26, 2025
0.4.0 Jul 9, 2025
0.1.0 Jun 9, 2025

#35 in #实现

Download history 10/week @ 2025-11-16 5/week @ 2025-11-23 17/week @ 2025-11-30 8/week @ 2025-12-07 1/week @ 2025-12-28 9/week @ 2026-01-04

706 downloads per month
Used in 2 crates (via ratatui-kit)

MIT license

36KB
826 lines

ratatui-kit-macros:核心 UI 宏定义,简化终端 UI 组件开发。

主要宏说明

  • #[derive(Props)]:为组件属性自动生成 Props trait 实现。
  • element!:声明式 UI 宏,极大提升终端 UI 组件开发效率。
    • 语法风格类似 React JSX,但为 Rust 语法友好设计。
    • 支持嵌套、props、children、条件渲染、列表渲染。
    • 条件渲染、列表渲染、动态子组件等均需写在 #(...expr) 语法块中,表达式可返回 Option/Vec/impl Iterator。
    • 通过 $ 前缀可兼容任何实现 WidgetRef 的 ratatui 原生组件或自定义组件,便于无缝集成 ratatui 能力。
    • 适用于声明式构建终端 UI 组件树。

element! 宏语法

例如,声明式构建一个带条件渲染和 ratatui 原生组件的 UI:

element!(Panel(title: "Demo") {
    #(if show_title { element!(Title("Hello")) }),
    #(for item in items { element!(ListItem(item)) }),
    $Block::default().borders(Borders::ALL),
})
  • 所有条件渲染、列表渲染、动态子组件都需包裹在 #(...) 表达式中,且条件渲染/循环渲染的子组件也需用 element! 宏包裹。
  • 通过 $ 前缀可直接集成 ratatui 原生组件。
  • 语法风格类似 JSX,但为 Rust 语法友好设计。
  • 适用于声明式构建终端 UI 组件树。

ratatui-kit-macros

This repository contains macro implementations for ratatui-kit.

Go there to learn more!

Dependencies

~320–730KB
~16K SLoC