Skip to Content
指南安装

安装

这一页只做一件事:让你用 crates.io 上的 ansiq 在一个全新的 Cargo 项目里跑起第一个应用。

如果你还没有 Rust,请先安装官方工具链,再回到这页继续。

前置条件

先确认本机已经有 Rust 和 Cargo:

rustc --version cargo --version

如果这两个命令都能正常输出版本号,就可以继续。

创建项目

Ansiq 不需要自定义模板。一个普通的二进制 crate 就够了:

cargo new hello-ansiq cd hello-ansiq

添加依赖

接下来安装 ansiqtokio

cargo add ansiq cargo add tokio --features macros,rt-multi-thread

这里引入 tokio 的原因不是“额外高级功能”,而是因为 Ansiq 应用本身运行在异步 runtime 里。后面你会用到消息发送、后台任务和流式输出,这一层提前准备好会更自然。

写入第一个应用

src/main.rs 改成下面这样:

use ansiq::prelude::*; use ansiq::{run_app, view}; #[derive(Clone, Debug)] enum Message { Submit(String), } #[derive(Default)] struct HelloApp { submitted: String, } impl App for HelloApp { type Message = Message; fn render(&mut self, cx: &mut ViewCtx<'_, Self::Message>) -> Element<Self::Message> { let draft = cx.signal(|| String::new()); let current = draft.get(); view! { <Paragraph text={"Type something and press Enter"} /> <Input value={current.clone()} on_change={{ let draft = draft.clone(); move |next| draft.set_if_changed(next) }} on_submit={|next| Some(Message::Submit(next))} /> <Paragraph text={format!("Last submit: {}", self.submitted)} /> } } fn update(&mut self, message: Self::Message, _handle: &RuntimeHandle<Self::Message>) { let Message::Submit(next) = message; self.submitted = next; } } #[tokio::main(flavor = "multi_thread")] async fn main() -> std::io::Result<()> { run_app(HelloApp::default()).await }

这段代码已经包含了 Ansiq 的最小主路径:

  • 一个 App
  • 一个局部 signal
  • 一个 Input
  • 一次 Message
  • 一次可见的 UI 更新

运行

现在直接运行:

cargo run

如果一切正常,你会看到一个简单的终端界面。输入文本并按 Enter 后,最后一次提交的内容会显示在下面。

下一步

Last updated on