Lingara Lingara Dokumentasyon Mga gabay API Mga library Mga app Gumawa Web app
Wika: Filipino

Rust

Isinalin mula sa Ingles ang pahinang ito. Kung magkaiba ang dalawa, ang pahinang Ingles ang tama. Basahin ang pahinang Ingles

Ang Rust library ay ang crate na lingara sa crates.io. Kailangan nito ang Rust 1.87 o mas bago at tumatakbo ito sa Tokio runtime. Galing sa rustls ang TLS bilang default, o sa sariling TLS ng platform sa pamamagitan ng isang feature.

Paano ito gamitin

  • Ang bawat tawag ay isang async fn na nagbabalik ng Result. Para kanselahin ang isang tawag, i-drop ang future nito; para kanselahin ang isang stream, i-drop ang stream.
  • Dumarating ang stream sa sandaling dumating ang mga response header, bilang isang Stream ng mga resulta. Basahin ito gamit ang .next().await.
  • Ang mga error ay iisang Error enum na may apat na variant. Ibinabalik ng Error::retry_after ang paghihintay na itinakda ng API, kung mayroon.
  • Gumawa ng client gamit ang Client::builder(). Para makibahagi sa isang connection pool, iabot dito ang sarili mong reqwest::Client, pero huwag bigyan ang client na iyon ng kabuuang timeout, dahil puputulin nito nang maaga ang mahahabang stream. Para sa deadline ng isang tawag, balutin ito sa tokio::time::timeout.

Ini-install ng mga halimbawa sa ibaba ang crate, gumagawa ng client, nag-i-stream ng listahan ng bokabularyo at humahawak ng error.

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()),
}

Ang binabalot ng pahinang ito