0Pricing
Learn Rust Coding · Pelajaran

pub dan Visibilitas

Mengendalikan akses

pub dan Visibilitas adalah pelajaran Learn Rust Coding gratis di CoddyKit. Ini adalah pelajaran 2 dari 4. Kamu bisa membaca pelajaran lengkapnya di bawah secara gratis — lalu praktikkan langsung di browser dengan editor kode bawaan dan tutor AI 24/7. Ini adalah bagian dari jalur belajar Learn Rust Coding, dan progresmu tersinkronisasi di web dan aplikasi CoddyKit. Kursus Learn Rust Coding mencakup 4 pelajaran total.

Privat Secara Bawaan

Dalam Rust, semua yang berada di dalam modul bersifat privat secara bawaan. Modul lain tidak dapat melihatnya kecuali Anda memilih untuk mengeksposnya dengan pub.

Bawaan yang aman ini menjaga detail implementasi tetap tersembunyi sampai Anda sengaja mengeksposnya.

Fungsi pub

Menandai fungsi dengan pub membuatnya dapat dipanggil dari luar modulnya. Tanpa penanda tersebut, pemanggilan akan gagal dikompilasi.

mod math {
    pub fn square(x: i32) -> i32 {
        x * x
    }
}

fn main() {
    println!("{}", math::square(5));
}

Helper Privat Tetap Tersembunyi

Anda dapat menjaga helper internal tetap privat sambil mengekspos API publik. Fungsi publik dapat memanggil fungsi privat, tetapi pihak luar tidak dapat memanggilnya.

mod math {
    fn double(x: i32) -> i32 { x * 2 }
    pub fn quadruple(x: i32) -> i32 { double(double(x)) }
}

fn main() {
    println!("{}", math::quadruple(3));
}

Struct pub Menyembunyikan Field

Menjadikan struct pub akan mengekspos tipenya, tetapi field-nya tetap privat kecuali masing-masing juga ditandai dengan pub.

Dengan demikian, Anda dapat mengontrol cara struct dibuat dan diubah.

mod model {
    pub struct User {
        pub name: String,
        age: u32,
    }
    impl User {
        pub fn new(name: String, age: u32) -> User {
            User { name, age }
        }
        pub fn age(&self) -> u32 { self.age }
    }
}

fn main() {
    let u = model::User::new(String::from("Sam"), 28);
    println!("{} is {}", u.name, u.age());
}

Mengapa Field Disembunyikan?

Field privat menegakkan invarian. Pemanggil harus menggunakan konstruktor dan metode Anda, sehingga Anda dapat memvalidasi input dan mengubah tata letak internal di kemudian hari tanpa merusak pengguna.

Enum pub Mengekspos Semuanya

Berbeda dari struct, enum pub secara otomatis menjadikan semua variannya publik. Varian tidak memiliki visibilitas terpisah.

mod traffic {
    pub enum Light {
        Red,
        Yellow,
        Green,
    }
}

fn main() {
    let l = traffic::Light::Green;
    let go = matches!(l, traffic::Light::Green);
    println!("go = {}", go);
}

pub(crate): Di Seluruh Crate

pub(crate) membuat item terlihat di mana saja dalam crate yang sama, tetapi tidak terlihat oleh crate lain yang bergantung pada crate Anda.

Ini sangat cocok untuk API internal yang digunakan bersama oleh berbagai modul.

mod config {
    pub(crate) fn default_port() -> u16 {
        8080
    }
}

fn main() {
    println!("{}", config::default_port());
}

pub(super): Hanya untuk Modul Induk

pub(super) mengekspos item hanya kepada modul induknya. Ini memberikan akses yang lebih terbatas daripada pub penuh.

mod outer {
    pub fn run() {
        inner::helper();
    }
    mod inner {
        pub(super) fn helper() {
            println!("visible to parent only");
        }
    }
}

fn main() {
    outer::run();
}

Mengekspor Ulang dengan pub use

pub use mengekspor ulang sebuah item, sehingga pemanggil dapat mengaksesnya melalui jalur yang lebih singkat atau lebih mudah. Ini membantu membentuk API publik yang rapi.

mod deep {
    pub mod nested {
        pub fn ping() {
            println!("pong");
        }
    }
    pub use nested::ping;
}

fn main() {
    deep::ping();
}

Merancang API Publik

Ekspos hanya permukaan terkecil yang diperlukan untuk menyelesaikan tugas. Jaga helper tetap privat, sembunyikan field struct di balik metode, dan gunakan pub(crate) untuk berbagi secara internal.

API yang ringkas lebih mudah dikembangkan tanpa merusak pengguna.

Ringkasan Tingkat Visibilitas

Dari yang paling membatasi hingga yang paling longgar:

  • bawaan (privat bagi modul)
  • pub(super) — terlihat oleh modul induk
  • pub(crate) — terlihat di seluruh crate
  • pub — terlihat di mana saja

Pemeriksaan Singkat

Uji pemahaman Anda tentang visibilitas.

Rangkuman

Anda telah mempelajari cara mengontrol akses:

  • Item bersifat privat secara bawaan; pub mengeksposnya
  • Struct pub mempertahankan field tetap privat kecuali masing-masing ditandai pub
  • Enum pub mengekspos semua varian
  • pub(crate) dan pub(super) memberikan kontrol yang lebih terperinci
  • pub use mengekspor ulang item untuk membentuk API yang rapi

Pertanyaan yang Sering Diajukan

Apakah pelajaran “pub dan Visibilitas” gratis?

Ya — teks lengkap “pub dan Visibilitas” gratis dibaca di sini di web. Untuk praktiknya secara interaktif (editor kode bawaan dan tutor AI 24/7) dan buka sisa kursus Learn Rust Coding, upgrade ke CoddyKit PRO. Kursus Learn Rust Coding mencakup 4 pelajaran total.

Apa yang akan aku pelajari di “pub dan Visibilitas”?

Mengendalikan akses Kamu berlatih Learn Rust Coding dengan kode praktik yang langsung kamu jalankan di browser, dan tutor AI 24/7 menjawab pertanyaanmu saat kamu mengerjakan pelajaran ini.

Apakah aku perlu pengalaman untuk memulai Learn Rust Coding?

Tidak diperlukan pengalaman sebelumnya. Learn Rust Coding di CoddyKit dirancang untuk pemula hingga pelajar tingkat lanjut, jadi kamu bisa memulai di sini atau dari awal dan belajar sesuai kecepatan kamu sendiri. Ini adalah pelajaran 2 dari 4.

Berapa lama pelajaran “pub dan Visibilitas” memakan waktu?

Sebagian besar pelajaran CoddyKit memakan waktu sekitar 5–10 menit. Setiap pelajaran ringkas dan interaktif, jadi kamu membuat kemajuan stabil dan melanjutkan dari tempat kamu tinggalkan di web dan aplikasi.

Bisakah aku menulis dan menjalankan kode dalam pelajaran Learn Rust Coding ini?

Ya. Setiap pelajaran Learn Rust Coding menyertakan editor kode bawaan, jadi kamu menulis dan menjalankan kode nyata langsung di browser dan mendapatkan umpan balik AI instan — tidak diperlukan penyiapan lokal.

Semua pelajaran dalam kursus ini

  1. Modul dan mod
  2. pub dan Visibilitas
  3. use dan Path
  4. Crate dan Akar Crate
← Kembali ke Learn Rust Coding