1个稳定版本

1.0.0 2023年1月24日

#1324 in 异步

MIT许可证

48KB
799

Otdb-rs

用Rust编写的Open Trivia Database包装器。


概述

这个crate旨在成为一个功能全面、简单易用的包装器。

基本示例

use otdb::prelude::{Client, Category, Difficulty};

// Let's try getting some music easy questions.
#[tokio::main]
async fn main() {
    let client = Client::new();
    
    let mut request = client.trivia();
    request.category(Category::Music)
        .difficulty(Difficulty::Easy);
    
    // Unwrapping is not a good idea, errors should be handled properly!
    let response = request.send().await.unwrap();
    
    println!("{:?}", response.results);
}

在阻塞上下文中的使用

这个crate还提供了一个阻塞客户端,可以在无法使用异步的情况下使用。要使用该客户端,必须在您的Cargo.toml中启用blocking功能,然后可以在blocking模块中访问该客户端。

让我们用上面的代码替换异步客户端

use otdb::prelude::{Category, Difficulty};
use otdb::blocking::Client;

// Let's try getting some music easy questions.
fn main() {
    let client = Client::new();
    
    let mut request = client.trivia();
    request.category(Category::Music)
        .difficulty(Difficulty::Easy);
    
    // Unwrapping is not a good idea, errors should be handled properly!
    let response = request.send().unwrap();
    
    println!("{:?}", response.results);
}

正如我们所看到的,我们只需要移除async/await语法,我们就可以正常使用了!

异步客户端和阻塞客户端之间的唯一区别是,在使用阻塞客户端时,您不需要在请求中对发送方法使用.await,其他一切都是一样的,因此切换客户端非常简单!

依赖关系

~6–17MB
~262K SLoC