Lingara Lingara Mwongozo Miongozo API Maktaba Programu Unda Programu ya wavuti
Lugha: Kiswahili

Rust

Ukurasa huu umetafsiriwa kutoka Kiingereza. Ikiwa hizi mbili zinatofautiana, ukurasa wa Kiingereza ndio sahihi. Soma ukurasa wa Kiingereza

Maktaba ya Rust ni crate ya lingara kwenye crates.io. Inahitaji Rust 1.87 au toleo jipya zaidi na inaendeshwa kwenye mazingira ya utekelezaji ya Tokio. TLS hutoka kwa rustls kwa chaguo-msingi, au kwa TLS ya jukwaa lenyewe kupitia kipengele (feature).

Jinsi inavyotumika

  • Kila mwito ni async fn inayorudisha Result. Ili kughairi mwito, iachilie future yake; ili kughairi mtiririko, uachilie mtiririko.
  • Mtiririko huwasili mara tu vichwa vya jibu vinapowasili, kama Stream ya matokeo. Usome kwa .next().await.
  • Hitilafu ni enum moja ya Error yenye aina nne. Error::retry_after hurudisha muda wa kusubiri ulioelezwa na API, ikiwa ulikuwepo.
  • Unda mteja kwa Client::builder(). Ili kushiriki kundi la miunganisho, mpe reqwest::Client yako mwenyewe, lakini usimpe mteja huyo kikomo cha muda wote, la sivyo atakatiza mitiririko mirefu. Kwa tarehe ya mwisho ya mwito mmoja, uufunge ndani ya tokio::time::timeout.

Sampuli zilizo hapa chini husakinisha crate, huunda mteja, hutiririsha orodha ya msamiati na hushughulikia hitilafu.

Rust

cargo add lingara@0.1.0-alpha.6
cargo add tokio --features macros,rt-multi-thread

Rust

use lingara::Client;

let client = Client::builder()
    .client_credentials(std::env::var("LINGARA_CLIENT_ID")?, std::env::var("LINGARA_CLIENT_SECRET")?)
    .build()?;

Rust

use lingara::models::{GenerateVocabularyEvent, VocabRequest};
use std::num::NonZeroU8;

let request = VocabRequest { level: 2, source_lang: "en".into(), target_lang: "zh".into(), count: NonZeroU8::new(8) };
let mut stream = client.generate_vocabulary(&request).await?;
while let Some(event) = stream.next().await {
    if let GenerateVocabularyEvent::Item(item) = event? {
        println!("{} {}", item.word, item.translation);
    }
}

Rust

use lingara::Error;

let result = client.get_usage().await;
if let Some(wait) = result.as_ref().err().and_then(Error::retry_after) {
    eprintln!("the API asks you to retry after {wait:?}");
}
match result {
    Ok(usage) => println!("{} allowance rows", usage.allowance.len()),
    // A refusal from the API: status, code (stable) and message (localised).
    Err(Error::Api(e)) => eprintln!("{} {} {}", e.status, e.code, e.message),
    // The token endpoint refused the credentials or the scopes.
    Err(Error::OAuth(e)) => eprintln!("{} {} {}", e.status, e.error, e.description.unwrap_or_default()),
    Err(Error::Maintenance(_)) => eprintln!("the API is under maintenance"),
    // No usable answer: connect, tls, reset, timeout, and so on.
    Err(Error::Transport(e)) => eprintln!("transport: {}", e.kind),
    Err(other) => return Err(other.into()),
}

Kile ukurasa huu unachofunika