Module & Cargo — Rust

Module & Cargo di Rust Saat project mulai besar, kamu butuh cara mengorganisir kode menjadi file-file terpisah dan mengelola dependency. Rust melakukannya lewat

Module & Cargo di Rust

Saat project mulai besar, kamu butuh cara mengorganisir kode menjadi file-file terpisah dan mengelola dependency. Rust melakukannya lewat modules dan Cargo.

mod — Mendefinisikan Module

// src/main.rs
mod matematika {
    pub fn tambah(a: i32, b: i32) -> i32 {
        a + b
    }

    fn rahasia() -> i32 { 42 }  // private by default
}

fn main() {
    println!("{}", matematika::tambah(2, 3));
    // matematika::rahasia();  // ERROR! private
}

pub — Visibility

Semua item di Rust private secara default. Gunakan pub untuk membuka akses:

pub struct User {
    pub nama: String,     // public field
    password: String,     // private field
}

use — Bring into Scope

use std::collections::HashMap;
use std::io::{self, Write};  // io dan io::Write

fn main() {
    let mut map: HashMap<&str, i32> = HashMap::new();
    map.insert("a", 1);
}

Module Tree & File Structure

proyek/
├── Cargo.toml
└── src/
    ├── main.rs       ← entry point (binary) atau lib.rs (library)
    ├── matematika.rs ← module `matematika`
    └── utils/
        ├── mod.rs    ← module `utils`
        └── format.rs ← sub-module `utils::format`

Di main.rs, deklarasikan: mod matematika; dan mod utils; — Rust otomatis mencari file-nya.

Cargo.toml — Manifest File

[package]
name = "proyek_saya"
version = "0.1.0"
edition = "2021"

[dependencies]
serde = { version = "1.0", features = ["derive"] }
tokio = { version = "1", features = ["full"] }
reqwest = "0.11"

[dev-dependencies]
criterion = "0.5"

Perintah Cargo

PerintahFungsi
cargo new proyekBuat project baru
cargo buildCompile (debug)
cargo build --releaseCompile optimized
cargo runBuild + run
cargo testJalankan semua tests
cargo checkType-check tanpa build full
cargo add serdeTambah dependency
cargo doc --openGenerate dan buka dokumentasi

crates.io — Package Registry

crates.io adalah registry official untuk crates (library) Rust — mirip npm untuk JavaScript atau PyPI untuk Python. Semua dependency di [dependencies] diambil dari sini secara default.

Contoh: Menggunakan External Crate

// Cargo.toml
// [dependencies]
// serde = { version = "1.0", features = ["derive"] }

use serde::Serialize;

#[derive(Serialize)]
struct User {
    nama: String,
    umur: u32,
}

Yang akan kamu pelajari