reqwest – HTTP Client (like Guzzle in Laravel)
Use case
Call third-party APIs
Microservice → microservice communication
Install
reqwest = { version = "0.12", features = ["json"] }
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)
}
👉 Laravel equivalent: Http::get()
2️⃣ validator – Request Validation (like Laravel Validator)
Install
validator = { version = "0.18", features = ["derive"] }
Example
use validator::Validate;
#[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())
}
👉 Laravel equivalent: $request->validate([...])
3️⃣ jsonwebtoken – JWT Auth
Install
jsonwebtoken = "9"
Example
use jsonwebtoken::{encode, Header, EncodingKey};
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()
}
👉 Laravel equivalent: auth()->attempt() + JWT package
4️⃣ argon2 – Password Hashing
Install
argon2 = "0.5"
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()
}
👉 Laravel equivalent: Hash::make()
5️⃣ tower-governor – Rate Limiting
Install
tower-governor = "0.4"
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),
});
👉 Laravel equivalent: ThrottleRequests middleware
6️⃣ redis – Cache & Queues
Install
redis = "0.25"
Example (cache)
use redis::{Commands, Client};
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(())
}
👉 Laravel equivalent: Cache::put()
7️⃣ lettre – Mail Sending
Install
lettre = { version = "0.11", features = ["smtp-transport"] }
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();
}
👉 Laravel equivalent: Mail::to()->send()
8️⃣ aws-sdk-s3 – File Storage (S3)
Install
aws-sdk-s3 = "1"
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();
}
👉 Laravel equivalent: Storage::disk('s3')->put()
9️⃣ clap – CLI Commands (Artisan-like)
Install
clap = { version = "4", features = ["derive"] }
Example
use clap::Parser;
#[derive(Parser)]
struct Cmd {
#[arg(long)]
migrate: bool,
}
fn main() {
let cmd = Cmd::parse();
if cmd.migrate {
println!("Running migrations...");
}
}
👉 Laravel equivalent: php artisan migrate
🔟 utoipa – API Documentation (Swagger)
Install
utoipa = "4"
Example
#[derive(utoipa::ToSchema)]
struct Vehicle {
id: i64,
title: String,
}
👉 Laravel equivalent: Swagger / OpenAPI packages
rust programming language docs
rust programming language u tube
Top comments (0)