# GitVerse Rust SDK
Rust клиент для [GitVerse API](https://gitverse.ru).
[](https://crates.io/crates/gitverse-sdk)
[](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