Portal/Notes πŸ“
RustRustlings_exercise

Modul

Versi Bahasa Indonesia. Baca dalam Bahasa Inggris

  • Gunakan keyword pub untuk membuat item menjadi publik.
  • Gunakan keyword use untuk membawa path ke dalam scope.
  • Gunakan keyword as untuk membuat alias bagi path yang dibawa ke scope menggunakan use.
  • Sebuah path dapat memiliki dua bentuk:
    • Absolute path adalah path lengkap yang dimulai dari crate root; untuk kode dari crate eksternal, absolute path dimulai dengan nama crate, dan untuk kode dari crate saat ini, dimulai dengan literal crate.
    • Relative path dimulai dari modul saat ini dan menggunakan self, super, atau identifier dalam modul saat ini.
  • Referensi:

modules1.rs

// TODO: Fix the compiler error about calling a private function.
mod sausage_factory {
    // Don't let anybody outside of this module see this!
    fn get_secret_recipe() -> String {
        String::from("Ginger")
    }

    pub fn make_sausage() {
        get_secret_recipe();
        println!("sausage!");
    }
}

fn main() {
    sausage_factory::make_sausage();
}
  • Latihan ini sederhana, kita hanya perlu membuat fungsi make_sausage dapat diakses dari fungsi main tetapi bukan fungsi get_secret_recipe.
  • Kita dapat melakukannya dengan menambahkan pub sebelum fn make_sausage().

modules2.rs

// You can bring module paths into scopes and provide new names for them with
// the `use` and `as` keywords.

mod delicious_snacks {
    // TODO: Add the following two `use` statements after fixing them.
    pub use self::fruits::PEAR as fruit; // as fruit and add pub
    pub use self::veggies::CUCUMBER as veggie; // as veggie and add pub

    mod fruits {
        pub const PEAR: &str = "Pear";
        pub const APPLE: &str = "Apple";
    }

    mod veggies {
        pub const CUCUMBER: &str = "Cucumber";
        pub const CARROT: &str = "Carrot";
    }
}

fn main() {
    println!(
        "favorite snacks: {} and {}",
        delicious_snacks::fruit,
        delicious_snacks::veggie,
    );
}
  • Di latihan ini TODO menyatakan bahwa kita perlu melengkapi sintaks use di bawah ini:

    use self::fruits::PEAR as ???;
    use self::veggies::CUCUMBER as ???;
  • Jadi kita dapat menyimpulkan bahwa kita perlu mengekspor ulang konstanta PEAR sebagai fruit dan CUCUMBER sebagai veggie.

  • Jangan lupa menambahkan pub sehingga dapat diakses di fungsi main.

modules3.rs

// You can use the `use` keyword to bring module paths from modules from
// anywhere and especially from the standard library into your scope.

// TODO: Bring `SystemTime` and `UNIX_EPOCH` from the `std::time` module into
// your scope. Bonus style points if you can do it with one line!
// use ???;

use std::time::SystemTime;
use std::time::UNIX_EPOCH;

fn main() {
    match SystemTime::now().duration_since(UNIX_EPOCH) {
        Ok(n) => println!("1970-01-01 00:00:00 UTC was {} seconds ago!", n.as_secs()),
        Err(_) => panic!("SystemTime before UNIX EPOCH!"),
    }
}
  • Di latihan ini kita perlu membawa SystemTime dan UNIX_EPOCH ke dalam scope main.

  • Kita dapat melakukannya dengan menggunakan use seperti di bawah ini:

    use std::time::SystemTime;
    use std::time::UNIX_EPOCH;

Edit on GitHub

Last updated on

Modul | Faisal Affan