🚀 RustBasic Core
📝 Kata Pengantar
Selamat datang di RustBasic Core. Crate ini adalah mesin inti (core engine) berkinerja tinggi yang menggerakkan seluruh ekosistem RustBasic Framework. Dirancang dengan arsitektur modular yang tangguh, rustbasic-core menyatukan kekuatan web server Hyper, SQL asinkron kustom, mesin template terintegrasi, serta layanan keamanan terintegrasi seperti proteksi CSRF otomatis, sesi terenkripsi, tracing logger harian, dan pengiriman email SMTP. Core engine ini memberikan fondasi yang sangat stabil, efisien, dan aman untuk membangun aplikasi web modern berskala besar.
⚡ Sistem Fitur Opsional (Compile-Time Features)
rustbasic-core menggunakan sistem Cargo features untuk menjaga jumlah dependensi seminimal mungkin. Hanya fitur yang benar-benar dibutuhkan yang akan dikompilasi.
Tabel Fitur
| Feature | Default | Crates Tambahan | Deskripsi |
|---|---|---|---|
sqlite |
✅ Ya | ~14 | Driver SQLite via rusqlite. Untuk database file lokal. |
sqlite-bundled |
❌ Tidak | ~14 | SQLite bundled (tidak butuh libsqlite3 di sistem). |
mysql |
❌ Tidak | ~174 | Driver MySQL/MariaDB via mysql_async + TLS stack penuh. |
mail |
❌ Tidak | beberapa | Pengiriman email SMTP via lettre. |
http-client |
❌ Tidak | beberapa | HTTP client via reqwest dengan dukungan TLS. |
Catatan: Secara default, hanya
sqliteyang aktif (~63 crates total). Ini membuat waktu kompilasi jauh lebih singkat dibanding mengaktifkan semua fitur sekaligus (>297 crates).
Cara Mengaktifkan Fitur
# Cargo.toml project Anda
# Hanya SQLite (default - paling ringan)
= { = "0.1" }
# SQLite + MySQL
= { = "0.1", = ["mysql"] }
# SQLite + MySQL + Email
= { = "0.1", = ["mysql", "mail"] }
# SQLite + MySQL + Email + HTTP Client
= { = "0.1", = ["mysql", "mail", "http-client"] }
# SQLite bundled (tanpa instalasi libsqlite3 di sistem)
= { = "0.1", = ["sqlite-bundled"] }
⚠️ Jika
DB_CONNECTION=mysqldi file.env, wajib aktifkan featuremysql, atau server akan panic saat startup.
🛠️ Contoh Penggunaan
A. Penambahan Dependensi ke Proyek Rust (Cargo.toml)
[]
# Pilih sesuai kebutuhan database Anda:
# Untuk SQLite:
= "0.1"
# Untuk MySQL:
= { = "0.1", = ["mysql"] }
B. Memuat Konfigurasi & Menjalankan Server Utama (src/main.rs)
use ;
async
C. Proteksi CSRF Otomatis & Sesi dalam Handler
use ;
pub async
D. Menggunakan HTTP Client (fitur opsional)
# Aktifkan dulu di Cargo.toml:
= { = "0.1", = ["http-client"] }
use Http;
// Hanya tersedia jika feature "http-client" diaktifkan
let response = get
.send
.await?;
E. Mengirim Email (fitur opsional)
# Aktifkan dulu di Cargo.toml:
= { = "0.1", = ["mail"] }
use MailService;
// Hanya tersedia jika feature "mail" diaktifkan
send
.to
.subject
.body
.send
.await?;
🔄 Perbandingan Pemakaian (Standard Rust vs RustBasic Core)
| Fitur / Karakteristik | Menulis Manual (Standard Rust) | Menggunakan RustBasic Core |
|---|---|---|
| Inisiasi Koneksi DB | Harus menulis puluhan baris kode pool connection manual. | Cukup panggil database::connect(&cfg).await secara instan. |
| Sistem Proteksi CSRF | Harus mengonfigurasi cookie & validator header manual. | Terintegrasi langsung dan diaktifkan otomatis pada layer HTTP. |
| Manajemen Sesi | Harus mengintegrasikan session store & enkripsi kunci sendiri. | Menyediakan session terenkripsi kuat berbasis APP_KEY. |
| Penyajian Aset Web | Menggunakan static folder konvensional yang lambat dibaca. | Mendukung single-binary embedding (RAM memory cache). |
| Jumlah Dependensi | Bergantung pada semua library yang dipilih secara manual. | Minimal by default (~63 crates), fitur berat bersifat opt-in. |
📊 Tabel Ringkasan Fitur Inti RustBasic Core
| Nama Modul Inti | Tanggung Jawab Utama | Deskripsi Fitur & Fungsionalitas |
|---|---|---|
server |
HTTP Server Engine | Pembungkus web server RustBasic yang menangani request/response dengan efisien. |
database |
Driver & Connection Pool | Koneksi database asinkron dengan dukungan SQLite (default) dan MySQL (opsional). |
security |
Proteksi CSRF & Encrypted Session | Mengamankan data sesi pengguna menggunakan enkripsi Application Key (APP_KEY). |
logger |
Tracing & Daily Rolling Logs | Logger yang mengarsipkan riwayat log secara harian di folder storage/logs/. |
mailer |
Layanan SMTP Mailer (opsional) | Mengirim email HTML/teks menggunakan mail transport terintegrasi. Aktifkan dengan feature mail. |
http_client |
HTTP Client (opsional) | Mengirim request HTTP ke service eksternal. Aktifkan dengan feature http-client. |
🏁 Penutup
Dengan menyediakan pustaka utilitas yang terintegrasi erat dan sistem compile-time features yang fleksibel, RustBasic Core menyederhanakan kompleksitas pengembangan aplikasi web di Rust tanpa mengorbankan performa kecepatan dan keamanan. Pengembang dapat dengan mudah membangun aplikasi berskala produksi yang kokoh dengan waktu kompilasi yang sangat singkat.