此 SDK 并非仅为 Rust 语言设计,而是利用 Rust 语言构建 SDK 核心库,然后对外提供多种编程语言接口的多平台多接口的通用 SDK。
由于核心均基于同一个库,外层仅仅只需要构建 API 绑定层,因此大幅改善了 SDK 的开发效率。
模块名 | 模块描述 |
---|---|
qiniu-rust | SDK 功能核心模块,采用 Rust 语言实现,提供 Rust SDK 所有功能 |
qiniu-rust-http | 定义了 HTTP 客户端接口,采用 Rust 语言实现,由 qiniu-rust 调用。该模块用于解耦 SDK 功能和 HTTP 客户端实现。 |
qiniu-rust-with-libcurl | 基于 libcurl 的 HTTP 客户端实现,采用 Rust 语言实现,实现 qiniu-rust-http 定义的接口,由启用了 use-libcurl 功能的 qiniu-rust 调用。 |
qiniu-c | 为 qiniu-rust 提供 C 接口,采用 Rust 语言实现(但测试用例采用 C 语言实现)。 |
qiniu-ruby | 为 qiniu-c 提供 Ruby 接口,采用 Ruby 语言实现。 |
模块名 | 模块描述 |
---|---|
qiniu-c-translator | 将 qiniu-c 提供的 C 接口翻译为多种编程语言的 C 绑定接口 |
模块名 | 模块描述 |
---|---|
qiniu-rust-test | qiniu-rust 集成测试模块,将基于七牛公有云存储测试 qiniu-rust 的功能实现 |
qiniu-rust-test-utils | 为 qiniu-rust 和 qiniu-rust-test-utils 提供公共测试库函数 |
- 以 Ruby 接口为例。当用户调用 Ruby 接口时,
qiniu-ruby
将调用由qiniu-c-translator
自动翻译的的 C 绑定接口,从而调用到qiniu-c
的接口。 qiniu-c
接口将调用qiniu-rust
的功能实现。- 对于需要发送 HTTP 请求的接口,
qiniu-rust
调用qiniu-rust-http
定义的 HTTP 客户端接口,从而调用到qiniu-rust-with-libcurl
或其他客户端实现来处理 SDK 的 HTTP 请求。
- 在 WebAssembly 普及前,暂不考虑提供面向浏览器的前端 SDK。
- 由于 Rust 编译后库尺寸较大,可能难以被移动端 SDK 用户接受,因此暂时不提供 Android SDK 和 iOS SDK 接口。