aboutsummaryrefslogtreecommitdiff
path: root/docs/_zh_CN/pages/1-intro.md
blob: eea766b71b42279e70261616b5938361e69e4384 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
<h1 align="center">介绍</h1>
<p align="center">
    <b>Mingling</b> 能做什么?
</p>

## 前言

首先,非常感谢您愿意尝试和体验 **Mingling**

因为这是一个早期框架,所以尚不成熟。

若您在使用过程中遇到任何问题,欢迎提交 [Issue](https://github.com/catilgrass/mingling/issues),我们乐意解决。

<div style="display: flex; gap: 16px; padding: 8px; align-items: stretch; max-width: 90%;">
  <div style="flex-shrink: 0; display: flex; align-items: center;">
    <a href="https://github.com/catilgrass/mingling" target="_blank">
      <img src="../res/pixel_icon_core_1024.png" style="height: 120px; object-fit: contain; padding: 8px;" />
    </a>
  </div>
  <div style="display: flex; flex-direction: column; justify-content: flex-start;">
    <div style="font-weight: bold; font-size: 1.2em; margin-bottom: 8px;">
      <a href="https://github.com/catilgrass/mingling" target="_blank" style="text-decoration: none; color: inherit;">Mingling - Github</a>
    </div>
    <div style="color: #555;">
        A Rust CLI framework for many subcmds & complex workflows, reduces boilerplate via proc macros, focus on biz logic
    </div>
  </div>
</div>

## Mingling 是什么?

**Mingling** 是一款 Rust 命令行开发框架,更准确地说,它是一款在调度、执行、渲染等方面提供高度抽象的框架。

它的核心逻辑是 **"转换"** —— 您输入的命令行参数(`Vec<String>`)会经过一系列的类型转换,最终变成您想要的结果。用一张图来说明:

  <center>
    <img src="../res/graph/flow.drawio.svg"/>
  </center>

**这意味着**,您的执行逻辑和渲染逻辑是完全分离的:所有的状态、数据和结构都是类型,它们都只是转换过程中的一个环节,清晰又灵活。

## 它适合什么样的项目?

如果您正在开发一个**子命令多、嵌套层次深、横切关注点多**,并且对**执行效率和动态补全**有要求的命令行工具,那么 **Mingling** 会是一个很好的选择。

这些能力得益于它高度抽象的宏系统,以及几乎全部在编译期完成的构建逻辑,让您在运行时能获得出色的性能。

## Mingling 能做些什么?

**Mingling** 专注于命令行流程的调度与编排,为您提供以下能力:

1. **核心调度** — 通过类型转换优雅地编排业务逻辑
2. **纯函数设计** — 所有行为都是纯函数,可以直接测试
3. **无限嵌套** — 支持无限嵌套的子命令系统,再复杂的结构也能驾驭
4. **动态补全** — 为任意子命令插入完全动态的补全逻辑 **\[`comp`\]**
5. **帮助文档** — 为任意子命令插入帮助文档,让用户轻松上手

## Mingling 不做些什么?

**Mingling** 专注于命令行**流程的调度与编排**,因此它不会提供以下功能(您可以自由搭配其他库来实现):

1. ❌ 彩色文字、进度条等外观功能
2. ❌ 国际化、本地化功能
3. ❌ TUI 界面功能

<p align="center" style="font-size: 0.85em; color: gray;">
    Written by @Weicao-CatilGrass
</p>