use github_rust::{GitHubService, Result};
#[tokio::main]
async fn main() -> Result<()> {
let service = GitHubService::new()?;
println!("Searching for trending Rust repositories...\n");
let repos = service
.search_repositories(
30, 10, Some("rust"), 50, )
.await?;
println!("Found {} repositories:\n", repos.len());
for (i, repo) in repos.iter().enumerate() {
println!(
"{}. {} ({} stars)",
i + 1,
repo.name_with_owner,
repo.stargazer_count
);
if let Some(desc) = &repo.description {
let desc: String = desc.chars().take(77).collect();
if desc.len() < repo.description.as_ref().map_or(0, |d| d.chars().count()) {
println!(" {}...", desc);
} else {
println!(" {}", desc);
}
}
if let Some(lang) = repo.language() {
println!(" Language: {}", lang);
}
let topics = repo.topics();
if !topics.is_empty() {
println!(
" Topics: {}",
topics
.iter()
.take(5)
.cloned()
.collect::<Vec<_>>()
.join(", ")
);
}
println!(" URL: {}", repo.url);
println!();
}
Ok(())
}