这是 iced_core 库的根文件,定义了整个框架的核心架构和公共API。
🎯 库的定位
rust
//! The core library of [Iced].
//!
//! This library holds basic types that can be reused and re-exported in
//! different runtime implementations.
核心作用 :提供可在不同运行时实现中复用和重导出的基础类型。
📦 模块组织
1. 公开模块 (23个)
rust
pub mod alignment; // 对齐方式
pub mod animation; // 动画系统
pub mod border; // 边框样式
pub mod clipboard; // 剪贴板操作
pub mod event; // 事件系统
pub mod font; // 字体管理
pub mod gradient; // 渐变效果
pub mod image; // 图片处理
pub mod input_method; // 输入法
pub mod keyboard; // 键盘事件
pub mod layout; // 布局引擎
pub mod mouse; // 鼠标事件
pub mod overlay; // 悬浮层
pub mod padding; // 内边距
pub mod renderer; // 渲染器接口
pub mod svg; // SVG矢量图
pub mod text; // 文本处理
pub mod theme; // 主题系统
pub mod time; // 时间相关
pub mod touch; // 触摸事件
pub mod widget; // 控件系统
pub mod window; // 窗口管理
2. 内部模块 (19个)
rust
mod angle; // 角度计算
mod background; // 背景样式
mod color; // 颜色定义
mod content_fit; // 内容适应
mod element; // UI元素
mod length; // 长度单位
mod pixels; // 像素单位
mod point; // 2D点
mod rectangle; // 矩形
mod rotation; // 旋转变换
mod settings; // 配置设置
mod shadow; // 阴影效果
mod shell; // Shell抽象
mod size; // 尺寸
mod transformation; // 变换矩阵
mod vector; // 2D向量
🔄 公共类型导出
1. 基础几何类型
rust
pub use point::Point; // 点 (x, y)
pub use size::Size; // 尺寸 (width, height)
pub use rectangle::Rectangle; // 矩形 (x, y, width, height)
pub use vector::Vector; // 向量 (dx, dy)
pub use angle::{Degrees, Radians}; // 角度/弧度
2. 样式相关
rust
pub use color::Color; // RGBA颜色
pub use background::Background; // 背景(颜色/渐变)
pub use border::Border; // 边框样式
pub use shadow::Shadow; // 阴影效果
pub use gradient::Gradient; // 渐变
3. 布局相关
rust
pub use length::Length; // 长度(固定/填充/比例)
pub use padding::Padding; // 内边距
pub use alignment::Alignment; // 对齐方式
pub use content_fit::ContentFit; // 内容适应模式
4. UI架构
rust
pub use element::Element; // UI元素容器
pub use widget::Widget; // 控件trait
pub use overlay::Overlay; // 悬浮层
pub use layout::Layout; // 布局计算
5. 渲染核心
rust
pub use renderer::Renderer; // 渲染器trait
pub use shell::Shell; // Shell抽象
pub use transformation::Transformation; // 变换矩阵
6. 第三方类型重导出
rust
pub use bytes::Bytes; // 字节缓冲区(来自bytes crate)
pub use smol_str::SmolStr; // 小字符串优化(来自smol_str crate)
pub use std::convert::Infallible as Never; // 不可能发生的错误
🛠️ 实用工具函数
never 函数 - 类型转换魔术
rust
/// 一个永远不会被调用的函数
pub fn never<T>(never: Never) -> T {
match never {}
}
用途 :将 Never 类型(不可能的值)转换为任何类型。在泛型编程中非常有用,特别是处理不可能发生的错误情况。
🎯 Function Trait - 函数式编程工具
定义
rust
pub trait Function<A, B, O> {
/// 部分应用函数的第一个参数
fn with(self, prefix: A) -> impl Fn(B) -> O;
}
实现
rust
impl<F, A, B, O> Function<A, B, O> for F
where
F: Fn(A, B) -> O,
A: Clone,
{
fn with(self, prefix: A) -> impl Fn(B) -> O {
move |result| self(prefix.clone(), result)
}
}
使用示例
rust
// 传统方式
element.map(move |result| Message::ButtonPressed(id, result))
// 使用Function trait(更简洁)
element.map(Message::ButtonPressed.with(id))
优势:
- ✅ 代码更简洁
- ✅ 避免显式闭包
- ✅ 支持函数式编程风格
🏗️ 架构图说明
库文档中引用的架构图:
markdown

这张图展示了 iced_core 作为整个 Iced 生态系统的基石,所有上层组件都建立在这些核心类型之上。
📊 模块分类总结
| 类别 | 模块数量 | 主要功能 |
|---|---|---|
| 几何数学 | 6 | Point, Size, Rectangle, Vector, Angle(含Degrees, Radians), Transformation |
| 样式主题 | 7 | Color, Background, Border, Shadow, Gradient, Theme, Font |
| 事件输入 | 5 | Mouse, Keyboard, Touch, Event, InputMethod |
| 布局渲染 | 6 | Layout, Renderer, Length, Padding, Alignment, ContentFit |
| UI组件 | 4 | Widget, Element, Overlay, Shell |
| 工具函数 | 5 | Function, never, SmolStr, Bytes, Never |
🔑 关键设计理念
- 模块化 - 每个功能独立成模块
- 可扩展性 - Trait-based设计
- 类型安全 - 强类型系统
- 零成本抽象 - Rust的零开销原则
- 函数式支持 - 提供Function trait等工具
总结 :lib.rs 是 iced_core 的门面,精心组织了整个核心库的模块结构,提供了清晰、模块化、类型安全的API,为整个Iced框架奠定了坚实的基础。