Debug School

rakesh kumar
rakesh kumar

Posted on

Commonly Popular Rust Packages

reqwest – HTTP Client (like Guzzle in Laravel)
Use case

Call third-party APIs

Microservice → microservice communication

Install

reqwest = { version = "0.12", features = ["json"] }
Enter fullscreen mode Exit fullscreen mode

Example

use reqwest::Client;
use serde_json::Value;

async fn fetch_user() -> Result<Value, reqwest::Error> {
    let client = Client::new();
    let res = client
        .get("https://api.example.com/user/1")
        .send()
        .await?
        .json::<Value>()
        .await?;

    Ok(res)
}
Enter fullscreen mode Exit fullscreen mode
👉 Laravel equivalent: Http::get()
Enter fullscreen mode Exit fullscreen mode

2️⃣ validator – Request Validation (like Laravel Validator)
Install

validator = { version = "0.18", features = ["derive"] }
Enter fullscreen mode Exit fullscreen mode

Example

use validator::Validate;
Enter fullscreen mode Exit fullscreen mode
#[derive(Validate)]
struct CreateUser {
    #[validate(length(min = 3))]
    name: String,

    #[validate(email)]
    email: String,
}

fn validate_user(input: CreateUser) -> Result<(), String> {
    input.validate().map_err(|e| e.to_string())
}

Enter fullscreen mode Exit fullscreen mode
👉 Laravel equivalent: $request->validate([...])
Enter fullscreen mode Exit fullscreen mode

3️⃣ jsonwebtoken – JWT Auth
Install

jsonwebtoken = "9"
Enter fullscreen mode Exit fullscreen mode

Example

use jsonwebtoken::{encode, Header, EncodingKey};
Enter fullscreen mode Exit fullscreen mode
use serde::{Serialize};

#[derive(Serialize)]
struct Claims {
    sub: i64,
    exp: usize,
}

fn create_jwt(user_id: i64) -> String {
    let claims = Claims {
        sub: user_id,
        exp: 2000000000,
    };

    encode(
        &Header::default(),
        &claims,
        &EncodingKey::from_secret("secret".as_ref()),
    ).unwrap()
}
Enter fullscreen mode Exit fullscreen mode

👉 Laravel equivalent: auth()->attempt() + JWT package
Enter fullscreen mode Exit fullscreen mode

4️⃣ argon2 – Password Hashing
Install

argon2 = "0.5"
Enter fullscreen mode Exit fullscreen mode

Example

use argon2::{Argon2, PasswordHasher};
use password_hash::{SaltString, rand_core::OsRng};

fn hash_password(password: &str) -> String {
    let salt = SaltString::generate(&mut OsRng);
    Argon2::default()
        .hash_password(password.as_bytes(), &salt)
        .unwrap()
        .to_string()
}

Enter fullscreen mode Exit fullscreen mode
👉 Laravel equivalent: Hash::make()
Enter fullscreen mode Exit fullscreen mode

5️⃣ tower-governor – Rate Limiting
Install

tower-governor = "0.4"
Enter fullscreen mode Exit fullscreen mode

Example (Axum middleware)

use tower_governor::{GovernorLayer, GovernorConfigBuilder};

let governor = GovernorConfigBuilder::default()
    .per_second(5)
    .burst_size(10)
    .finish()
    .unwrap();

let app = Router::new().layer(GovernorLayer {
    config: std::sync::Arc::new(governor),
});
Enter fullscreen mode Exit fullscreen mode

👉 Laravel equivalent: ThrottleRequests middleware

6️⃣ redis – Cache & Queues
Install

redis = "0.25"
Enter fullscreen mode Exit fullscreen mode

Example (cache)

use redis::{Commands, Client};
Enter fullscreen mode Exit fullscreen mode
fn set_cache() -> redis::RedisResult<()> {
    let client = Client::open("redis://127.0.0.1/")?;
    let mut con = client.get_connection()?;

    con.set("key", "value")?;
    let v: String = con.get("key")?;
    println!("{}", v);

    Ok(())
}
Enter fullscreen mode Exit fullscreen mode
👉 Laravel equivalent: Cache::put()
Enter fullscreen mode Exit fullscreen mode

7️⃣ lettre – Mail Sending
Install

lettre = { version = "0.11", features = ["smtp-transport"] }
Enter fullscreen mode Exit fullscreen mode

Example

use lettre::{Message, SmtpTransport, Transport};

fn send_mail() {
    let email = Message::builder()
        .from("noreply@example.com".parse().unwrap())
        .to("user@example.com".parse().unwrap())
        .subject("Hello")
        .body("Welcome to Rust backend")
        .unwrap();

    let mailer = SmtpTransport::unencrypted_localhost();
    mailer.send(&email).unwrap();
}
Enter fullscreen mode Exit fullscreen mode
👉 Laravel equivalent: Mail::to()->send()
Enter fullscreen mode Exit fullscreen mode

8️⃣ aws-sdk-s3 – File Storage (S3)
Install

aws-sdk-s3 = "1"
Enter fullscreen mode Exit fullscreen mode

Example

use aws_sdk_s3::{Client};
use aws_config::load_from_env;

async fn upload_s3() {
    let config = load_from_env().await;
    let client = Client::new(&config);

    client.put_object()
        .bucket("my-bucket")
        .key("file.txt")
        .body("hello".into())
        .send()
        .await
        .unwrap();
}
Enter fullscreen mode Exit fullscreen mode
👉 Laravel equivalent: Storage::disk('s3')->put()
Enter fullscreen mode Exit fullscreen mode

9️⃣ clap – CLI Commands (Artisan-like)
Install

clap = { version = "4", features = ["derive"] }
Enter fullscreen mode Exit fullscreen mode

Example

use clap::Parser;

#[derive(Parser)]
struct Cmd {
    #[arg(long)]
    migrate: bool,
}

fn main() {
    let cmd = Cmd::parse();
    if cmd.migrate {
        println!("Running migrations...");
    }
}
Enter fullscreen mode Exit fullscreen mode
👉 Laravel equivalent: php artisan migrate
Enter fullscreen mode Exit fullscreen mode

🔟 utoipa – API Documentation (Swagger)
Install

utoipa = "4"
Enter fullscreen mode Exit fullscreen mode

Example

#[derive(utoipa::ToSchema)]
struct Vehicle {
    id: i64,
    title: String,
}
Enter fullscreen mode Exit fullscreen mode
👉 Laravel equivalent: Swagger / OpenAPI packages
Enter fullscreen mode Exit fullscreen mode

rust programming language docs
rust programming language u tube

Top comments (0)