< 返回版块

philipgreat 发表于 2026-06-22 14:46

Tags:teaql, aicoding, worldcup2026

[Showcase] 基于 Rust & TeaQL 构建的 2026 世界杯命令行交互程序 🏆 (打包仅 7MB)

大家好,今天想和大家分享一个用 Rust 编写的高性能、交互式 CLI 小项目:World Cup 2026 - Rust Edition 🏆

这原本是一个基于 Java 的项目,近期我们将它 100% 移植到了 Rust 生态。它的核心是由我们开发的 TeaQL 数据引擎和内嵌的 SQLite 数据库驱动。得益于 Rust 的特性,整个程序> 被编译成了一个无外部依赖的独立本地可执行文件。

告别了 JVM 和冷启动延迟,配合 musl 进行全静态编译后,最终打包出来的 scratch Docker 镜像不到 7MB,运行体验快如闪电!⚡️

🌟 核心亮点

  • 交互式 CLI Shell:提供了一个完整的 REPL 交互体验,带有专属的 wc2026> 提示符。
  • 精美的终端 UI:支持查看 A-L 组的所有分组数据。文本对齐完美,配合 Emoji 渲染和动态颜色编码,终端视觉体验极佳。
  • 全局积分榜:支持一键纵览全量 48 支球队的全球大排行。
  • TeaQL 强类型支持:借助生成的 TeaQL Rust 宏与 ORM,能将数据无缝、安全地映射到内嵌的 SQLite 中。
  • 极致轻量:纯静态编译,告别臃肿。

🛠️ 怎么玩?

进入交互界面后,你可以使用以下命令:

  • group <A-L> - 查看特定小组的当前积分榜(例如:group A)。
  • groups - 罗列所有小组的排名情况。
  • rank - 查看整个赛事的全球总榜单。
  • clear / exit / quit - 清屏或退出程序。

本地运行:

# 源码编译运行
cd rust-workspace
cargo run --release

使用 Docker(极简镜像):

docker run -it --rm teaql/worldcup2026:latest group A

📚 Rust 开发体验分享:TeaQL 的丝滑 API

在用 Rust 重写业务逻辑的过程中,TeaQL 帮我们极大地简化了与数据库的交互。这里分享几种典型的 API 场景:

1. 复杂关系查询 & 排序 (Q API)

Q API 提供了强类型的链式调用。比如我们要加载带有关联球队信息的积分榜,并进行多维度的复杂排序,代码写起来非常优雅:

let standings = Q::group_standings()
    .select_tournament_team_with(Q::tournament_teams().select_self())
    .with_match_group_matching(Q::match_groups().with_id_is(g.id()))
    .order_by_points_desc()
    .order_by_goal_difference_desc()
    .order_by_goals_for_desc()
    .purpose("cli").execute_for_list(ctx).await?;

2. 字段读取 (E API)

一种安全且强类型的方式,从已加载的实体中提取数据:

let name = E::tournament(entity)
    .get_tournament_name()
    .eval();

3. 数据写入与审计 (Entity API)

在创建新数据或更新数据时,我们可以链式修改字段,甚至直接内置审计日志(Audit Log):

let mut t = Q::tournaments().new_entity(ctx);
t.update_tournament_name("FIFA World Cup 2026".to_string());
t.update_total_teams(48);

// 持久化保存,并自动生成 "Seed tournament" 的审计追踪日志
t.audit_as("Seed tournament").save(ctx).await?;

截图

主界面 小组界面 球员界面 日志界面

💡 总结

将重度依赖运行时的应用转为 Rust 构建,不仅将资源占用和打包体积缩小了几个数量级,运行效率和启动速度也达到了极致。同时,配合自动生成的 TeaQL 强类型结构,我们在 Rust 中写业务逻>辑和数据库交互也能像使用高级动态语言一样得心应手。

欢迎大家克隆代码在本地把玩!如果你对 Rust 的 CLI 开发、静态编译打包,或者 TeaQL 数据库引擎有任何想法,非常欢迎在评论区交流探讨~ 🍻

👉 项目源码传送门: 002-world-cup-2006-tui

评论区

写评论

还没有评论

1 共 0 条评论, 1 页