5 个稳定版本

1.3.0 2023 年 5 月 31 日
1.2.1 2022 年 9 月 10 日
1.2.0 2022 年 8 月 28 日
1.1.1 2022 年 7 月 8 日
1.0.0 2021 年 9 月 17 日

#1615 in 网页编程

每月 31 次下载

MIT/Apache

150KB
4K SLoC

Speedrun-Api | Speedrun.com API 的 Rust 包装器

端点在 api 模块下可用。端点可以使用 "builder" 模式构建。要使用端点,可以使用 QueryAsyncQuery 特性进行查询。分页端点可以使用 PagedEndpointExt 特性上的方法进行查询。

所有端点返回的类型由调用者选择,这些类型实现了 serde Deserialize 特性。建议调用者定义自己的类型以从 API 获取数据。这为调用者提供了更多控制权,可以精确地确定哪些字段被反序列化,并且可以更好地适应可能的 API 变更。示例类型在 types 模块中提供。

异步示例


use speedrun_api::{
    api::{
        leaderboards::FullGameLeaderboard,
        AsyncQuery,
    },
    error::SpeedrunApiResult,
    SpeedrunApiBuilder,
    types,
}

#[tokio::main]
pub async fn main() -> SpeedrunApiResult<()> {
    // Create a new async client
    let client = SpeedrunApiBuilder::new().build_async()?;

    // Build a new endpoint
    // This gets the "All Campaigns" leaderboard for Age of Empires II.
    let endpoint = FullGameLeaderboard::builder()
        .game("xldev513")
        .category("rklg3rdn")
        .build()
        .unwrap();

    // Query the endpoint using `client`
    let leaderboard: types::Leaderboard = endpoint.query_async(&client).await?;
}

有关更多示例(包括分页端点),请参阅 examples

设计说明

设计基于 Ben Boeckel 的博客文章 Designing Rust bindings for REST APIsgitlab crate

依赖关系

~4–20MB
~264K SLoC