Lingara Lingara Belgeler Rehberler API Kütüphaneler Uygulamalar Oluştur Web uygulaması
Dil: Türkçe

Rust

Bu sayfa İngilizceden çevrilmiştir. İkisi arasında fark varsa İngilizce sayfa doğrudur. İngilizce sayfayı oku

Rust kütüphanesi, crates.io üzerindeki lingara crate’idir. Rust 1.87 veya üstünü gerektirir ve Tokio çalışma zamanında çalışır. TLS varsayılan olarak rustls’ten ya da bir feature aracılığıyla platformun kendi TLS’inden gelir.

Kullanımı nasıldır

  • Her çağrı bir async fn’dir ve bir Result döndürür. Bir çağrıyı iptal etmek için future’ını bırakın (drop); bir akışı iptal etmek için akışı bırakın.
  • Bir akış, yanıt başlıkları gelir gelmez sonuçlardan oluşan bir Stream olarak gelir. Onu .next().await ile okuyun.
  • Hatalar, dört varyantlı tek bir Error enum’udur. Error::retry_after, API bir bekleme süresi belirttiyse o süreyi döndürür.
  • Client::builder() ile bir istemci oluşturun. Bir bağlantı havuzunu paylaşmak için ona kendi reqwest::Client örneğinizi verin, ancak o istemciye toplam zaman aşımı vermeyin; yoksa uzun akışları erken keser. Tek bir çağrıya son süre koymak için onu tokio::time::timeout ile sarın.

Aşağıdaki örnekler crate’i kurar, bir istemci oluşturur, bir kelime listesini akış hâlinde alır ve bir hatayı işler.

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

Bu sayfanın sarmaladıkları