2 releases
Uses new Rust 2024
| 0.1.1 | Sep 12, 2025 |
|---|---|
| 0.1.0 | Sep 12, 2025 |
#355 in Compression
16KB
142 lines
Dart Pub SDK
一个用于与 Dart Pub 服务交互的 Rust SDK。
功能特性
- 搜索和获取 Dart 包信息
- 支持多种镜像源(清华大学、上海交通大学、中国区等)
- 异步 API 设计
- 完整的包信息模型
安装
在你的 Cargo.toml 文件中添加依赖:
[dependencies]
dart_pub_sdk = { path = "path/to/dart_pub_sdk" }
注意:目前这个库还未发布到 crates.io,需要通过本地路径引用。
快速开始
基本用法
use dart_pub_sdk::{DartPubClient, DartPubService};
#[tokio::main]
async fn main() {
// 创建默认客户端(使用官方源)
let client = DartPubClient::default();
// 搜索包
match client.search("flutter_lints".to_string()).await {
Ok(package) => {
println!("包名: {}", package.name);
println!("最新版本: {}", package.latest.version);
}
Err(e) => {
eprintln!("搜索失败: {}", e);
}
}
}
使用镜像源
use dart_pub_sdk::{DartPubClient, DartPubMirror};
#[tokio::main]
async fn main() {
// 使用中国区镜像
let client = DartPubClient::with_mirror(DartPubMirror::flutter_io_cn());
// 或者使用清华大学镜像
// let client = DartPubClient::with_mirror(DartPubMirror::tsing_hua());
// 或者使用上海交通大学镜像
// let client = DartPubClient::with_mirror(DartPubMirror::shang_hai_jiao_tong());
match client.search("http".to_string()).await {
Ok(package) => {
println!("包名: {}", package.name);
println!("版本数量: {}", package.versions.len());
}
Err(e) => {
eprintln!("搜索失败: {}", e);
}
}
}
API 文档
DartPubClient
主要的客户端结构,用于与 Dart Pub 服务交互。
创建客户端
DartPubClient::default()- 使用官方源创建客户端DartPubClient::with_mirror(mirror: DartPubMirror)- 使用指定镜像源创建客户端DartPubClient::new(host: String)- 使用自定义主机地址创建客户端
方法
search(&self, query: String) -> Result<DartPackage, Box<dyn std::error::Error>>- 搜索指定名称的包
DartPubMirror
预定义的镜像源。
DartPubMirror::tsing_hua()- 清华大学镜像DartPubMirror::flutter_io_cn()- 中国区镜像DartPubMirror::shang_hai_jiao_tong()- 上海交通大学镜像
数据模型
DartPackage
表示一个 Dart 包的完整信息。
name: String- 包名称latest: VersionInfo- 最新版本信息versions: Vec<Version>- 所有版本信息
VersionInfo / Version
版本信息结构。
version: String- 版本号pubspec: Pubspec- 包的元数据archive_url: String- 包归档文件的 URLarchive_sha256: String- 归档文件的 SHA256 校验和published: String- 发布时间
Pubspec
包的元数据信息。
name: String- 包名称description: String- 包描述repository: Option<String>- 仓库地址issue_tracker: Option<String>- 问题跟踪地址homepage: Option<String>- 主页地址version: String- 版本号environment: Environment- 环境要求dependencies: Option<HashMap<String, Dependency>>- 依赖信息topics: Option<Vec<String>>- 主题标签
许可证
本项目采用 MIT 许可证。详情请参阅 LICENSE 文件。
Dependencies
~6–21MB
~224K SLoC