Rust - Mô-đun

Một nhóm mã logic được gọi là Mô-đun. Nhiều mô-đun được biên dịch thành một đơn vị được gọi làcrate. Các chương trình gỉ có thể chứa thùng nhị phân hoặc thùng thư viện. Thùng nhị phân là một dự án thực thi có phương thức main () . Thùng thư viện là một nhóm các thành phần có thể được sử dụng lại trong các dự án khác. Không giống như thùng nhị phân, thùng thư viện không có điểm vào (phương thức main ()). Công cụ Cargo được sử dụng để quản lý các thùng trong Rust. Ví dụ, mô-đun mạng chứa các chức năng liên quan đến mạng và mô-đun đồ họa chứa các chức năng liên quan đến bản vẽ. Mô-đun tương tự như không gian tên trong các ngôn ngữ lập trình khác. Các thùng của bên thứ ba có thể được tải xuống bằng hàng hóa từ crates.io .

Sr.No Thuật ngữ & Mô tả
1

crate

Là một đơn vị biên dịch trong Rust; Thùng được biên dịch sang hệ nhị phân hoặc thư viện.

2

cargo

Công cụ quản lý gói Rust chính thức cho thùng.

3

module

Nhóm mã một cách hợp lý trong một thùng.

4

crates.io

Sổ đăng ký gói Rust chính thức.

Cú pháp

//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() {
   }
}

Các mô-đun có thể là công cộng hoặc riêng tư. Các thành phần trong một mô-đun riêng không thể được truy cập bởi các mô-đun khác. Các mô-đun trong Rust là riêng tư theo mặc định. Ngược lại, các chức năng trong một mô-đun công cộng có thể được truy cập bởi các mô-đun khác. Mô-đun phải được bắt đầu bằngpubtừ khóa để công khai. Các chức năng trong một mô-đun công khai cũng phải được công khai.

Minh họa: Định nghĩa một Mô-đun

Ví dụ định nghĩa một mô-đun công cộng - phim . Mô-đun chứa một hàm play () chấp nhận một tham số và in giá trị của nó.

pub mod movies {
   pub fn play(name:String) {
      println!("Playing movie {}",name);
   }
}
fn main(){
   movies::play("Herold and Kumar".to_string());
}

Đầu ra

Playing movie Herold and Kumar

Sử dụng từ khóa

Các sử dụng từ khóa giúp để nhập khẩu một mô-đun công cộng.

Cú pháp

use public_module_name::function_name;

Hình minh họa

pub mod movies {
   pub fn play(name:String) {
      println!("Playing movie {}",name);
   }
}
use movies::play;
fn main(){
   play("Herold and Kumar ".to_string());
}

Đầu ra

Playing movie Herold and Kumar

Mô-đun lồng nhau

Các mô-đun cũng có thể được lồng vào nhau. Các bộ phim hài mô-đun được lồng trong tiếng anh mô-đun, đó là tiếp tục lồng trong phim mô-đun. Ví dụ dưới đây xác định một chức năng chơi bên trong mô-đun phim / tiếng anh / phim hài .

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());
}

Đầu ra

Playing comedy movie Herold and Kumar
Playing comedy movie The Hangover
Playing comedy movie Airplane!

Hình minh họa - Tạo thùng thư viện và tiêu thụ trong thùng nhị phân

Hãy để chúng tôi tạo một thùng thư viện có tên movie_lib, chứa một mô-đun movies. Để xây dựngmovie_lib thùng thư viện, chúng tôi sẽ sử dụng công cụ cargo.

Bước 1 - Tạo thư mục Dự án

Tạo một thư mục movie-app, sau đó là một thư mục con movie-lib . Sau khi thư mục và thư mục con được tạo, hãy tạo mộtsrcthư mục và tệp Cargo.toml trong thư mục này. Mã nguồn sẽ nằm trong thư mục src . Tạo các tệp lib.rs và phim.rs trong thư mục src. Tệp Cargo.toml sẽ chứa siêu dữ liệu của dự án như số phiên bản, tên tác giả, v.v.

Cấu trúc thư mục dự án sẽ như hình dưới đây:

movie-app
   movie-lib/
      -->Cargo.toml
      -->src/
         lib.rs
         movies.rs

Bước 2 - Chỉnh sửa tệp Cargo.toml để thêm siêu dữ liệu dự án

[package]
name = "movies_lib"
version = "0.1.0"
authors = ["Mohtashim"]

Bước 3 - Chỉnh sửa tệp lib.rs.

Thêm định nghĩa mô-đun sau vào tệp này.

pub mod movies;

Dòng trên tạo một mô-đun công khai - movies.

Bước 4 - Chỉnh sửa tệp phim.rs

Tệp này sẽ xác định tất cả các chức năng cho mô-đun phim.

pub fn play(name:String){
   println!("Playing movie {} :movies-app",name);
}

Đoạn mã trên xác định một hàm play() chấp nhận một tham số và in nó ra bảng điều khiển.

Bước 5 - Xây dựng thùng thư viện

Xây dựng ứng dụng bằng cách sử dụng cargo buildlệnh để xác minh xem thùng thư viện có được cấu trúc đúng hay không. Đảm bảo rằng bạn đang ở thư mục gốc của dự án - thư mục ứng dụng phim. Thông báo sau sẽ được hiển thị trong thiết bị đầu cuối nếu quá trình xây dựng thành công.

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

Bước 6 - Tạo ứng dụng thử nghiệm

Tạo một thư mục khác movie-lib-testtrong thư mục movie-app, theo sau là tệp Cargo.toml và thư mục src. Dự án này nên có phương thức chính vì đây là một thùng nhị phân, sẽ sử dụng thùng thư viện đã tạo trước đó. Tạo tệp main.rs trong thư mục src. Cấu trúc thư mục sẽ như hình.

movie-app
   movie-lib 
   // already completed

   movie-lib-test/
      -->Cargo.toml
      -->src/
         main.rs

Bước 7 - Thêm thông tin sau vào tệp Cargo.toml

[package]
name = "test_for_movie_lib"
version = "0.1.0"
authors = ["Mohtashim"]

[dependencies]
movies_lib = { path = "../movie-lib" }

NOTE- Đường dẫn đến thư mục thư viện được đặt dưới dạng phụ thuộc. Sơ đồ sau đây cho thấy nội dung của cả hai dự án.

Bước 8 - Thêm phần sau vào tệp main.rs

extern crate movies_lib;
use movies_lib::movies::play;
fn main() {
   println!("inside main of test ");
   play("Tutorialspoint".to_string())
}

Đoạn mã trên nhập một gói bên ngoài có tên là movies_lib. Kiểm tra Cargo.toml của dự án hiện tại để xác minh tên thùng.

Bước 9 - Sử dụng đóng hàng và vận chuyển hàng hóa

Chúng tôi sẽ sử dụng việc xây dựng hàng hóa và chạy hàng hóa để xây dựng dự án nhị phân và thực hiện nó như hình dưới đây -