gitverse-sdk 1.2.1

Rust SDK for GitVerse API
Documentation
# GitVerse Rust SDK

Rust клиент для [GitVerse API](https://gitverse.ru).

[![Crates.io](https://img.shields.io/crates/v/gitverse-sdk.svg)](https://crates.io/crates/gitverse-sdk)
[![Documentation](https://docs.rs/gitverse-sdk/badge.svg)](https://docs.rs/gitverse-sdk)

## Установка

Добавьте в `Cargo.toml`:

```toml
[dependencies]
gitverse-sdk = "1"
tokio = { version = "1", features = ["macros", "rt-multi-thread"] }
```

## Быстрый старт

```rust
use gitverse_sdk::{Client, ClientConfig};

#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
    let client = Client::new(ClientConfig {
        token: "your-token".to_string(),
        ..Default::default()
    })?;

    // Получить текущего пользователя
    let user = client.get_authenticated().await?;
    println!("Hello, {}!", user.login.as_deref().unwrap_or("(unknown)"));

    // Получить репозиторий
    let repo = client.get("owner", "repo").await?;
    println!("Repo: {} ({} stars)", repo.full_name, repo.stars_count);

    Ok(())
}
```

## Возможности

- Полное покрытие GitVerse API
- Async/await HTTP клиент на базе reqwest
- Автоматическая обработка Rate Limits
- Версионирование API с предупреждениями об устаревании
- Строго типизированные структуры с serde
- Идиоматичная обработка ошибок

## Обработка ошибок

```rust
use gitverse_sdk::errors::{self, Error};

match client.get_by_username("nonexistent").await {
    Ok(user) => println!("Found: {}", user.login.as_deref().unwrap_or("(unknown)")),
    Err(ref e) if errors::is_not_found(e) => println!("User not found"),
    Err(ref e) if errors::is_rate_limit_error(e) => println!("Rate limited"),
    Err(e) => eprintln!("Error: {e}"),
}
```

## Связанные проекты

- [@onreza/gitverse-sdk]https://www.npmjs.com/package/@onreza/gitverse-sdk — TypeScript SDK
- [Go SDK]https://gitverse.ru/onreza/gitverse-sdk/tree/main/packages/sdk-go

## Лицензия

MIT