16 个版本 (9 个稳定版)

1.5.0 2024年5月28日
1.4.0 2023年11月16日
1.3.2 2023年10月3日
1.2.0 2023年4月14日
0.1.0 2020年10月15日

#48 in 国际化 (i18n)

Download history 29342/week @ 2024-04-30 29175/week @ 2024-05-07 26955/week @ 2024-05-14 29562/week @ 2024-05-21 29103/week @ 2024-05-28 81007/week @ 2024-06-04 637679/week @ 2024-06-11 311991/week @ 2024-06-18 222222/week @ 2024-06-25 94749/week @ 2024-07-02 92633/week @ 2024-07-09 92633/week @ 2024-07-16 90833/week @ 2024-07-23 88647/week @ 2024-07-30 106077/week @ 2024-08-06 96686/week @ 2024-08-13

397,617 每月下载量
252 个软件包中 使用 252 (直接使用 46 个)

Unicode-3.0

1.5MB
20K SLoC

icu_provider crates.io

icu_providerICU4X 组件之一。

Unicode 在 ICU4X 的父项目 ICU4C 和 ICU4J 中的经验使团队意识到,数据管理是部署国际化的最关键方面,并且它需要对其嵌入的平台的高级别定制。因此,ICU4X 提供了一系列提供者,允许 ICU4X 自然地适应客户的各种商业和技术需求。

icu_provider 定义了用于通过 ICU4X 区域数据管道传输数据的特性和结构体。主要的特型是 DataProvider。它由一个 KeyedDataMarker 参数化,该参数包含数据类型和一个 DataKey。它有一个方法,DataProvider::load,该方法将一个 DataRequest 转换为 DataResponse

  • DataKey 是数据类型的固定标识符,例如 "plurals/cardinal@1"
  • DataRequest 包含额外的注释以选择键的特定变体,例如区域。
  • DataResponse 包含如果请求成功的数据。

此外,还有三个其他特型被广泛实现

此包最常用的类型通过预导入包含

use icu_provider::prelude::*;

数据提供者的类型

所有非平凡的数据提供者都可以归入以下两个类别之一。

  1. AnyProvider:其数据源自结构化 Rust 对象的提供者
  2. BufferProvider:其数据源自非结构化 [u8] 缓冲区的提供者

✨关键见解:给定的数据提供者通常是 要么 AnyProvider 要么 BufferProvider。哪种类型取决于数据源,通常无法将其转换为另一种类型。

另请参阅 crate::constructors

AnyProvider

这些提供者能够返回转换为 dyn Any 特型对象的结構化数据。用户可以通过调用 as_downcasting 来通过向下转换特型对象获得实现 DataProvider 的对象。

AnyProvider 的示例

  • DatagenProvider 从 CLDR 源文件读取结构化数据,并返回 ICU4X 数据结构。
  • AnyPayloadProvider 包装特定的数据结构并返回它。
  • BakedDataProvider 直接在 Rust 源代码中编码结构化数据。

缓冲区提供者

这些提供者能够返回非结构化数据,通常表示为 serde 序列化的缓冲区。用户可以通过调用 as_deserializing() 通过 Serde 反序列化来获取一个实现 DataProvider 的对象。

缓冲区提供者的示例

提供者适配器

ICU4X 提供了几个内置模块,以有趣的方式组合提供者。这些可以在 icu_provider_adapters 包中找到。

测试提供者

此包还包含一个用于演示的具体提供者

类型和生命周期

Yokeable 兼容的类型可以通过数据提供者传递,前提是它们与实现 DataMarker 的标记类型相关联。

数据结构通常应有一个生命周期参数: 'data。这个生命周期允许数据结构借用零拷贝数据。

数据生成 API

此功能通过 "datagen" Cargo 功能启用

datagen 模块包含几个用于数据生成的 API。请参阅 icu_datagen 以获取参考数据生成实现。

更多信息

有关开发、作者、贡献等信息,请访问 ICU4X 主页

依赖项

~0.6–1.4MB
~31K SLoC