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 indukpub(crate)— terlihat di seluruh cratepub— terlihat di mana saja
Pemeriksaan Singkat
Uji pemahaman Anda tentang visibilitas.
Rangkuman
Anda telah mempelajari cara mengontrol akses:
- Item bersifat privat secara bawaan;
pubmengeksposnya - Struct
pubmempertahankan field tetap privat kecuali masing-masing ditandaipub - Enum
pubmengekspos semua varian pub(crate)danpub(super)memberikan kontrol yang lebih terperincipub usemengekspor 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
- Modul dan mod
- pub dan Visibilitas
- use dan Path
- Crate dan Akar Crate