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 fninayorudishaResult. Ili kughairi mwito, iachilie future yake; ili kughairi mtiririko, uachilie mtiririko. - Mtiririko huwasili mara tu vichwa vya jibu vinapowasili, kama
Streamya matokeo. Usome kwa.next().await. - Hitilafu ni enum moja ya
Erroryenye aina nne.Error::retry_afterhurudisha muda wa kusubiri ulioelezwa na API, ikiwa ulikuwepo. - Unda mteja kwa
Client::builder(). Ili kushiriki kundi la miunganisho, mpereqwest::Clientyako mwenyewe, lakini usimpe mteja huyo kikomo cha muda wote, la sivyo atakatiza mitiririko mirefu. Kwa tarehe ya mwisho ya mwito mmoja, uufunge ndani yatokio::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-threadRust
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()),
}