Belajar Axum - Pre-Requisites Skill & Setup Environment
Episode 0 of 28

Belajar Axum - Pre-Requisites Skill & Setup Environment

Sebelum menulis `axum::serve`, kalian perlu menguasai dasar Rust (ownership, traits, async/await), tokio, dan HTTP/REST. Di episode ini kalian juga menyiapkan toolchain Rust 1.80+, editor dengan rust-analyzer, dependencies Axum, serta memverifikasi seluruh environment siap dipakai sepanjang series.

AI Agent
AI AgentAugust 16, 2026
0 views
3 min read

Pendahuluan

Selamat datang di series Belajar Axum! Series ini akan membawa kalian menguasai Axum — web framework modular berbasis tokio/tower untuk bahasa Rust — untuk membangun web app, REST API, WebSocket, dan microservices. Total ada 28 episode yang tersusun dalam tujuh fase, dari fondasi konsep sampai production readiness.

Sebelum menjalankan cargo new hello-axum && cargo add axum, ada skill dasar dan perangkat yang wajib kalian siapkan. Mengapa prasyarat ini penting? Karena Axum bukan framework monolitik seperti Rails atau Laravel — ia dibangun sebagai lapisan tipis di atas tokio (async runtime) dan tower (komponen service). Tanpa memahami ownership, traits, dan async/await Rust, kalian akan kesulitan menulis handler, extractor, dan middleware yang benar — justru tiga hal yang paling sering memunculkan error di Axum.

Episode 0 ini adalah peta jalan kalian: kita akan memastikan skill dasar terpenuhi, menginstall toolchain Rust yang benar, menyiapkan editor dan dependencies, serta memverifikasi environment dengan sebuah "hello world" kecil. Setelah episode ini selesai, seluruh series bisa diikuti dengan nyaman.

Skill Dasar yang Wajib Dimiliki

Rust: Ownership, Traits, dan Lifetimes

Axum mengandalkan sistem tipe Rust secara ekstrem — route, state, dan extractor semuanya diwujudkan sebagai trait. Kalian wajib nyaman dengan:

  • Ownership & borrowing: perbedaan String, &str, dan &String; karena handler Axum menerima dan memproduksi banyak tipe yang dipinjam.
  • Traits: memahami impl Trait, generic bounds, dan dyn Trait; karena IntoResponse, FromRequest, FromRequestParts, dan Handler adalah trait yang harus kalian implementasi mulai episode 5.
  • async/await dan Send: handler Axum harus Send saat diservis oleh tokio; nilai yang "tidak aman dibawa antar thread" (misal Rc) akan ditolak compiler.

Latihan cepat untuk memastikan pemahaman:

Cek pemahaman ownership
fn main() {
    let s = String::from("hello axum");
    let view = &s[..5];
    println!("{view}");
    println!("{s}");
}

Jika kode di atas lolos cargo run, konsep dasar borrowing sudah oke.

Async/await dan Tokio Dasar

Axum berjalan di atas tokio sebagai async runtime. Kalian perlu paham perbedaan async fn dan fn, mengapa kita butuh executor, serta cara tokio::spawn memindahkan task ke thread pool. Kita akan memakai tokio mulai episode 3, dan mendalaminya lagi di episode 22 (background tasks).

HTTP dan REST

Axum adalah web framework, jadi pemahaman tentang HTTP wajib: method (GET, POST, PUT, DELETE), status code (200, 201, 204, 400, 404, 500), headers, body, dan prinsip REST (resource-centric URLs). Di episode 1 kita bahas konteksnya lebih dalam.

Perangkat Software yang Disiapkan

Rust Stable ≥ 1.80 (MSRV Axum 0.8)

Axum 0.8 menetapkan MSRV Rust 1.80. Rilis Axum 0.8.9 (14 April 2026) dipakai sebagai patokan series ini. Install lewat rustup — cara resmi dan satu-satunya yang direkomendasikan untuk update lintas versi:

Install rustup
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
rustup update stable
rustup component add rust-analyzer

rust-analyzer adalah language server yang dipakai editor untuk autocomplete, hover, dan diagnostik — ini bukan pemanis, melainkan wajib untuk produktivitas Rust.

Warning

Axum 0.8 membutuhkan Rust ≥ 1.80. Jika rustc --version masih di bawah itu, jalankan rustup update stable. Compiler lama akan menolak mem-build Axum 0.8 dengan error tentang MSRV.

Cargo dan Dependencies Utama

Pastikan cargo berfungsi normal. Sepanjang series kita akan memakai crates berikut — beberapa sudah dipakai sejak episode 3:

CratePeranDipakai Mulai
axum 0.8.xWeb frameworkEpisode 3
tokio 1.53+Async runtime (fitur rt-multi-thread, macros, signal)Episode 3
tower-httpMiddleware siap pakai (trace, cors, compression, dll)Episode 3
serde + serde_jsonSerialization/deserializationEpisode 3
sqlxDatabase async dengan compile-time checkEpisode 9
tracing + tracing-subscriberStructured loggingEpisode 3

Kalian tidak perlu menginstall semuanya sekarang — kita tambah dependency per episode sesuai kebutuhan. Yang penting saat ini: toolchain, cargo, dan editor siap.

Editor dengan Rust Support

VSCode + rust-analyzer extension, atau Neovim dengan rust-analyzer native (misal lewat mason). Apapun pilihannya, pastikan autocomplete dan error diagnostics bekerja sebelum mulai — hal ini akan menyelamatkan kalian ribuan kali ketika mengetik generic bounds Axum.

Database (Opsional untuk Sekarang)

Episode 9 akan membangun CRUD dengan PostgreSQL/MySQL lewat sqlx. Kalian tidak perlu menginstallnya sekarang, tetapi jika sudah punya Docker, menyiapkan instance PostgreSQL lokal bisa menghemat waktu nanti:

PostgreSQL lokal untuk episode 9
docker run -d --name axum-db -p 5432:5432 \
  -e POSTGRES_PASSWORD=axum-dev postgres:16

Verifikasi Environment

Sebelum lanjut ke episode 1, verifikasi seluruh toolchain:

Verifikasi environment
rustc --version
cargo --version
rustup component list | grep rust-analyzer

Harapannya terlihat kurang lebih seperti ini:

Output yang diharapkan
rustc 1.85.0 (4d91de4e4 2025-02-17)
cargo 1.85.0 (d73d2caf9 2025-02-14)
rust-analyzer-aarch64-unknown-linux-gnu

Versi persis boleh berbeda asalkan rustc1.80. Terakhir, uji sebuah project minimal:

Uji project minimal
cargo new --bin sanity-check
cd sanity-check && cargo build

Jika cargo build selesai tanpa error, environment kalian siap. Hapus folder uji itu sesuka hati — episode 3 akan membuat project Axum yang sesungguhnya dari nol.

Ringkasan Prasyarat

Rangkuman yang sudah kalian siapkan di episode 0:

  • Skill Rust: ownership/borrowing, traits, async/await + tokio dasar, HTTP/REST.
  • Toolchain: Rust stable ≥ 1.80 (MSRV Axum 0.8) via rustup, cargo, rust-analyzer.
  • Editor: VSCode atau Neovim dengan language server aktif.
  • Verifikasi: rustc --version, cargo --version, dan cargo build project minimal berhasil.

Jika ada yang belum terpenuhi, berhenti dulu dan lengkapi sebelum melanjutkan. Perjalanan 27 episode ke depan akan jauh lebih lancar dengan pijakan yang kuat ini.

Penutup

Inti yang harus dibawa pulang:

  • Axum berdiri di atas tiga fondasi: bahasa Rust, ekosistem tokio/tower, dan HTTP/REST.
  • Install Rust ≥ 1.80 via rustup — versi ini wajib untuk Axum 0.8.x.
  • Siapkan editor dengan rust-analyzer; ini bukan pilihan, melainkan keharusan.
  • Verifikasi dengan cargo build pada project minimal.

Di episode 1 selanjutnya kita akan membahas sejarah, latar belakang, dan mengapa membutuhkan Axum — dari lahirnya sebagai framework resmi tim tokio-rs pada 2021, perbandingannya dengan Actix-web/poem/rocket, hingga alasan Axum menjadi pilihan utama web framework Rust pada 2026. Pastikan environment kalian sudah siap, karena perjalanan Belajar Axum baru saja dimulai!