一、前置环境准备

二、创建项目

  • Windows 打开 PowerShell / Linux/macOS 终端执行   

1. 创建二进制项目

# 创建名为 iced_counter 的项目
cargo new iced_counter
# 进入项目目录
cd iced_counter

项目目录:

iced_counter/
├── Cargo.toml        # 项目配置、依赖管理
├── Cargo.lock        # 依赖版本锁定文件(自动生成,无需修改)
├── src/
│   └── main.rs       # 全部业务代码(窗口、逻辑、UI)
└── target/           # 编译产物目录(自动生成)
    ├── debug/        # cargo run 开发编译文件
    └── release/      # --release 发布成品程序

2. 添加 Iced 依赖(修改 Cargo.toml)

[package]
name = "iced_counter"
version = "0.1.0"
edition = "2021"

# 依赖 Iced GUI 框架,使用最新稳定版
[dependencies]
iced = "0.14"

说明:iced = "0.14" 会自动引入窗口、组件、渲染全套功能,无需额外细分依赖。

三、完整 src/main.rs(整理带注释代码)

直接覆盖自动生成的 src/main.rs

// 导入Iced界面组件:按钮、文本、通用UI元素
use iced::widget::{button, text};
use iced::Element;

/// 程序入口函数
/// Iced框架标准签名,返回运行结果,处理窗口异常
pub fn main() -> iced::Result {
    // 启动GUI应用
    // 参数1:update 状态更新函数
    // 参数2:view 界面渲染函数
    // Iced自动初始化状态为 0,自动维护消息循环、窗口重绘
    iced::run(update, view)
}

/// 交互消息枚举
/// 用户所有界面操作都会转化为对应Message,统一交给update处理
#[derive(Debug, Clone)]
enum Message {
    // 按钮点击,计数器自增事件
    Increment,
}

/// 状态更新逻辑
/// 根据收到的消息修改全局状态
/// counter:可变引用,程序唯一状态(计数器数字)
/// message:界面触发的交互消息
fn update(counter: &mut u64, message: Message) {
    match message {
        // 收到自增消息,数值 +1
        Message::Increment => *counter += 1,
    }
}

/// 界面渲染函数
/// 根据当前状态生成UI界面,状态变化会自动重新调用渲染
fn view(counter: &u64) -> Element<'_, Message> {
    // 构建按钮组件
    // text(counter):按钮内部显示当前计数值
    // on_press:绑定点击事件,点击发送 Increment 消息
    // into():将按钮转为通用根UI元素返回
    button(text(counter))
        .on_press(Message::Increment)
        .into()
}

四、运行项目

1. 开发模式运行(热编译、带日志)

cargo run

首次运行会下载编译 Iced 及其底层图形依赖,等待几分钟。 运行成功会弹出窗口:一个显示数字的按钮,点击数字持续 + 1。

2. 运行窗口

Logo

Agent 垂直技术社区,欢迎活跃、内容共建。

更多推荐