Crates.io | krate |
lib.rs | krate |
version | 1.0.0 |
source | src |
created_at | 2023-01-29 00:55:57.261372 |
updated_at | 2023-02-03 16:31:45.708372 |
description | Get information and metadata for published Rust crates. |
homepage | |
repository | https://github.com/TheLarkInn/krate |
max_upload_size | |
id | 770682 |
size | 42,305 |
Asynchonously get information and metadata for a Rust Crate published on Crates.io!
krate
additionally comes with struct Krate
which contains a partially implemented data model for the &Crates.io API/V1 Contract.
NOTE: Currently there is no publically docuemented API contract for the Crates.io API/V1 Contract so any changes or null
values passed via the API could break serialization. 🤷♂️
Please see the crawler policy on Crates.io if you are planning to use this library to crawl or access the crates data.
$> cargo add krate
main.rs
use krate::KrateClientBuilder;
#[tokio::main]
async fn main() {
// Create a KrateClient
let client = KrateClientBuilder::new("My User Agent Tool")
.build_async()
.unwrap();
match client.get_async("serde").await {
Ok(serde_crate) => {
println!("Krate: {}", serde_crate.krate.name);
println!("Latest Version: {}", serde_crate.get_latest());
println!("Description: {}", serde_crate.krate.description );
},
Err(e) => println!("Error: {e}"),
}
}
This is a very small implementation! For more robust client see @TheDuke's crates-io-api