طقم تطوير Rust
حزمة serpcheap هي عميل Rust الرسمي — تشفير TLS عبر rustls (بدون OpenSSL النظامي)، وعميل
blocking متزامن افتراضياً.
التثبيت
Section titled “التثبيت”cargo add serpcheapالبدء السريع
Section titled “البدء السريع”use serpcheap::{Client, SearchParams};
fn main() -> Result<(), serpcheap::Error> { let client = Client::builder("YOUR_API_KEY").build()?; let resp = client.search(&SearchParams::new("best running shoes").gl("us"))?;
println!("query: {}", resp.search); for r in &resp.organic { println!("{}. {} — {}", r.position, r.title, r.link); } if let Some(stats) = &resp.stats { println!("balance: {} (cost {})", stats.balance, stats.cost); } Ok(())}المعاملات والإعداد
Section titled “المعاملات والإعداد”let params = SearchParams::new("rust language") .gl("gb") // country (default "us") .hl("en") // UI language .tbs("qdr:d") // time filter .page(2); // 1-indexed
use std::time::Duration;use serpcheap::{Client, ClientOptions};
let client = Client::new("YOUR_API_KEY", ClientOptions { base_url: "https://api.serp.cheap".into(), timeout: Duration::from_secs(15), max_retries: 2,})?;معالجة الأخطاء
Section titled “معالجة الأخطاء”use serpcheap::ErrorCode;
match client.search(&SearchParams::new("q")) { Ok(resp) => println!("{} results", resp.organic.len()), Err(err) => match err.code { ErrorCode::InsufficientCredits => eprintln!("top up"), ErrorCode::RateLimited => eprintln!("retry after {:?} ms", err.retry_after_ms), _ if err.is_retryable() => eprintln!("transient: {err}"), _ => eprintln!("error: {err}"), },}