4 个版本
0.1.6 | 2023 年 7 月 10 日 |
---|---|
0.0.3 | 2023 年 7 月 8 日 |
0.0.2 | 2023 年 7 月 8 日 |
0.0.1 | 2023 年 7 月 7 日 |
#3 in #hacker-news
38KB
585 行代码(不含注释)
Newswrap
Hacker News 的 Rust API 绑定。
use newswrap::client::HackerNewsClient;
#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
// Build your client at the start of your application process
let client = HackerNewsClient::new();
// Call various endpoints with your client instance
let first_item = client.get_item(69).await?;
dbg!(&first_item);
// Determine what the item type is
let item_type = first_item.get_item_type();
dbg!(item_type);
// Check if the item is job
assert!(first_item.is_comment());
// Retrieve user information
let user = client.get_user("joeymckenzie").await;
dbg!(user);
Ok(())
}
什么是 newswrap?
Newswrap 为 Hacker News API 提供了一个便捷的 Rust 接口。 Hacker News 是一个面向软件开发人员和科技专业人士的社区驱动的网站。虽然 Hacker News 向公众提供了 API,但没有官方的语言库来连接到它。本项目旨在提供一个易于使用的基于 Rust 的客户端,以优雅的方式从 Hacker News 获取数据,并支持一流的异步功能。
使用 newswrap
要在 Rust 应用程序中开始使用 newswrap,只需添加此包,
cargo add newswrap
并在应用程序流程开始时启动客户端
use newswrap::{client::HackerNewsClient, errors::HackerNewsClientError};
#[tokio::main]
async fn main() -> Result<(), HackerNewsClientError> {
// Build your client at the start of your application process
let client = HackerNewsClient::new();
// Check for the latest item ID
let latest_id = client.realtime.get_latest_item_id().await?;
// Get the latest stories IDs
let story = client.items.get_story(69).await?;
println!("{}... nice.", story.title);
// Retrieve user profiles and information
let my_profile = client.users.get_user("joeymckenzie").await?;
if let Some(about_section) = my_profile.about {
println!("{}", about_section);
}
Ok(())
}
在内部,newswrap 依赖于 https://docs.rs/reqwest/latest/reqwest/ 通过 HTTP 从 Hacker News API 收集信息。建议在应用程序流程开始时创建单个实例。 示例 可用于使用客户端在二进制应用程序和 Web 应用程序(使用 axum)中。
依赖关系
~4–19MB
~259K SLoC