#http-request #asynchronous-programming #error-logging #regex #extension #tokio #async-http

exstd

exstd is a Rust library that provides a set of commonly used extensions for the Rust standard library, including serialization, asynchronous programming, HTTP requests, logging, error handling, and more

7 releases

0.1.6 May 19, 2024
0.1.5 May 19, 2024

#1095 in Web programming

MIT license

6KB

exstd

exstd is a Rust library that provides a set of commonly used extensions for the Rust standard library. It includes a variety of popular crates that cover essential functionalities such as serialization, asynchronous programming, HTTP requests, logging, error handling, and more.

Features

  • Serialization: Easily serialize and deserialize data with serde and serde_json, serde_yaml.
  • Asynchronous Programming: Utilize tokio for asynchronous programming.
  • HTTP Requests: Perform HTTP requests with reqwest.
  • Logging: Implement logging with log and env_logger.
  • Date and Time: Work with dates and times using chrono.
  • Regular Expressions: Use regular expressions with regex.
  • Command Line Interface: Parse command line arguments with clap.
  • Environment Variables: Manage environment variables with dotenvy. (dotenv project is abandoned)
  • Ordered Maps: Use indexmap for ordered maps and sets, which maintain the order of insertion. This can be particularly useful when the order of elements is important for your application.
  • Parallelism: Leverage rayon for data parallelism. rayon makes it easy to perform parallel computations using Rust's powerful type system and concurrency model.
  • Random Number Generation: Utilize rand for generating random numbers. rand provides a wide range of random number generators and distributions, making it suitable for a variety of applications including simulations and games.

Installation

Add exstd to your Cargo.toml:

[dependencies]
exstd = "0.1.4"

Usage

Here's an example of how to use exstd in your project:

extern crate exstd;

use exstd::serde::{Serialize, Deserialize};
use exstd::tokio::main as tokio_main;
use exstd::reqwest::get;
use log::info;
use anyhow::Result;

#[derive(Serialize, Deserialize, Debug)]
struct MyStruct {
    name: String,
    age: u32,
}

#[tokio_main]
async fn main() -> Result<()> {
    env_logger::init();

    let my_struct = MyStruct {
        name: "John Doe".to_string(),
        age: 30,
    };

    let json = serde_json::to_string(&my_struct)?;
    info!("Serialized JSON: {}", json);

    let response = get("https://httpbin.org/get").await?.text().await?;
    info!("HTTP GET Response: {}", response);

    Ok(())
}

Dependencies

~13–26MB
~392K SLoC