Karat - Modul
Sekelompok kode logis disebut Modul. Beberapa modul dikompilasi menjadi satu unit yang disebutcrate. Program Rust mungkin berisi peti biner atau peti perpustakaan. Sebuah peti biner adalah proyek yang dapat dieksekusi yang memiliki metode main () . Peti perpustakaan adalah sekelompok komponen yang dapat digunakan kembali dalam proyek lain. Tidak seperti peti biner, peti perpustakaan tidak memiliki titik masuk (metode main ()). Alat Kargo digunakan untuk mengelola peti di Rust. Misalnya, modul jaringan berisi fungsi terkait jaringan dan modul grafis berisi fungsi terkait gambar. Modul mirip dengan namespace dalam bahasa pemrograman lain. Peti pihak ketiga dapat diunduh menggunakan kargo dari crates.io .
Sr Tidak | Istilah & Deskripsi |
---|---|
1 | crate Apakah unit kompilasi di Rust; Crate dikompilasi ke biner atau perpustakaan. |
2 | cargo Alat manajemen paket Rust resmi untuk peti. |
3 | module Secara logis mengelompokkan kode di dalam peti. |
4 | crates.io Registri paket Rust resmi. |
Sintaksis
//public module
pub mod a_public_module {
pub fn a_public_function() {
//public function
}
fn a_private_function() {
//private function
}
}
//private module
mod a_private_module {
fn a_private_function() {
}
}
Modul bisa publik atau pribadi. Komponen dalam modul privat tidak dapat diakses oleh modul lain. Modul di Rust bersifat pribadi secara default. Sebaliknya, fungsi dalam modul publik dapat diakses oleh modul lain. Modul harus diawali denganpubkata kunci untuk menjadikannya publik. Fungsi dalam modul publik juga harus dipublikasikan.
Ilustrasi: Mendefinisikan Modul
Contoh ini mendefinisikan modul publik - film . Modul berisi fungsi play () yang menerima parameter dan mencetak nilainya.
pub mod movies {
pub fn play(name:String) {
println!("Playing movie {}",name);
}
}
fn main(){
movies::play("Herold and Kumar".to_string());
}
Keluaran
Playing movie Herold and Kumar
Gunakan Kata Kunci
Kata kunci use membantu mengimpor modul publik.
Sintaksis
use public_module_name::function_name;
Ilustrasi
pub mod movies {
pub fn play(name:String) {
println!("Playing movie {}",name);
}
}
use movies::play;
fn main(){
play("Herold and Kumar ".to_string());
}
Keluaran
Playing movie Herold and Kumar
Modul Bersarang
Modul juga bisa disarangkan. The komedi modul bersarang dalam bahasa Inggris modul, yang kemudian bersarang di film modul. Contoh yang diberikan di bawah ini mendefinisikan sebuah fungsi bermain di dalam modul film / bahasa Inggris / komedi .
pub mod movies {
pub mod english {
pub mod comedy {
pub fn play(name:String) {
println!("Playing comedy movie {}",name);
}
}
}
}
use movies::english::comedy::play;
// importing a public module
fn main() {
// short path syntax
play("Herold and Kumar".to_string());
play("The Hangover".to_string());
//full path syntax
movies::english::comedy::play("Airplane!".to_string());
}
Keluaran
Playing comedy movie Herold and Kumar
Playing comedy movie The Hangover
Playing comedy movie Airplane!
Ilustrasi - Buat Peti Perpustakaan dan Konsumsi di Peti Biner
Mari kita buat peti perpustakaan bernama movie_lib, yang berisi modul movies. Untuk membangunmovie_lib peti perpustakaan, kami akan menggunakan alat tersebut cargo.
Langkah 1 - Buat folder Proyek
Buat aplikasi film folder diikuti dengan sub-folder movie-lib . Setelah folder dan sub-folder dibuat, buat filesrcfolder dan file Cargo.toml di direktori ini. Kode sumber harus masuk ke folder src . Buat file lib.rs dan film.rs di folder src. File Cargo.toml akan berisi metadata proyek seperti nomor versi, nama penulis, dll.
Struktur direktori proyek akan seperti yang ditunjukkan di bawah ini -
movie-app
movie-lib/
-->Cargo.toml
-->src/
lib.rs
movies.rs
Langkah 2 - Edit file Cargo.toml untuk menambahkan metadata proyek
[package]
name = "movies_lib"
version = "0.1.0"
authors = ["Mohtashim"]
Langkah 3 - Edit file lib.rs.
Tambahkan definisi modul berikut ke file ini.
pub mod movies;
Baris di atas membuat modul publik - movies.
Langkah 4 - Edit file film.rs
File ini akan menentukan semua fungsi untuk modul film.
pub fn play(name:String){
println!("Playing movie {} :movies-app",name);
}
Kode di atas mendefinisikan sebuah fungsi play() yang menerima parameter dan mencetaknya ke konsol.
Langkah 5 - Bangun peti perpustakaan
Bangun aplikasi menggunakan cargo buildperintah untuk memverifikasi apakah peti perpustakaan terstruktur dengan benar. Pastikan Anda berada di root proyek - folder aplikasi film. Pesan berikut akan ditampilkan di terminal jika build berhasil.
D:\Rust\movie-lib> cargo build
Compiling movies_lib v0.1.0 (file:///D:/Rust/movie-lib)
Finished dev [unoptimized + debuginfo] target(s) in 0.67s
Langkah 6 - Buat aplikasi pengujian
Buat folder lain movie-lib-testdi folder aplikasi film diikuti oleh file Cargo.toml dan folder src. Proyek ini harus memiliki metode utama karena ini adalah peti biner, yang akan menggunakan peti perpustakaan yang dibuat sebelumnya. Buat file main.rs di folder src. Struktur folder akan seperti yang ditunjukkan.
movie-app
movie-lib
// already completed
movie-lib-test/
-->Cargo.toml
-->src/
main.rs
Langkah 7 - Tambahkan yang berikut di file Cargo.toml
[package]
name = "test_for_movie_lib"
version = "0.1.0"
authors = ["Mohtashim"]
[dependencies]
movies_lib = { path = "../movie-lib" }
NOTE- Jalur ke folder perpustakaan ditetapkan sebagai dependensi. Diagram berikut menunjukkan isi dari kedua proyek tersebut.
Langkah 8 - Tambahkan berikut ini ke file main.rs
extern crate movies_lib;
use movies_lib::movies::play;
fn main() {
println!("inside main of test ");
play("Tutorialspoint".to_string())
}
Kode di atas mengimpor paket eksternal yang disebut movies_lib. Periksa Cargo.toml proyek saat ini untuk memverifikasi nama peti.
Langkah 9 - Penggunaan build kargo dan kargo
Kami akan menggunakan pembangunan kargo dan menjalankan kargo untuk membangun proyek biner dan menjalankannya seperti yang ditunjukkan di bawah ini -