/ / Tổ chức các dự án rỉ sét với các gói, đường dẫn và mô-đun

Tổ chức các dự án rỉ sét với các gói, đường dẫn và mô-đun

Rust là một lựa chọn tuyệt vời để xây dựng các ứng dụng phức tạp và đáng tin cậy. Một trong những kỹ năng cần thiết để phát triển các ứng dụng Rust là cấu trúc các dự án của bạn một cách hiệu quả, bao gồm cả việc kết hợp các gói của bên thứ ba.


Tổ chức dự án hiệu quả là rất quan trọng để phát triển các ứng dụng Rust. Các ứng dụng Rust có cấu trúc tốt nâng cao khả năng cộng tác và tích hợp ứng dụng bên thứ ba dễ dàng, giảm đáng kể thời gian và công sức cần thiết để phát triển ứng dụng. Rust cung cấp trình quản lý gói tích hợp và các công cụ khác để tổ chức và quản lý mã hiệu quả.


Thiết lập dự án Rust

Việc thiết lập các dự án Rust thật dễ dàng sau khi bạn đã cài đặt Rust trên máy của mình; bạn có thể sử dụng Cargo (hệ thống xây dựng và quản lý gói tích hợp sẵn của Rust) để tạo và định cấu hình dự án Rust. Nó tương tự như các trình quản lý gói khác như npm cho Node.js và pip cho Python. Cargo quản lý các phần phụ thuộc, biên dịch mã và tạo tài liệu, khiến nó trở thành một công cụ thiết yếu để phát triển Rust.

Chạy lệnh này để xác minh cài đặt Cargo của bạn:

 cargo --version

Lệnh hiển thị phiên bản Cargo đã cài đặt.

Bạn có thể tạo một dự án Rust mới với hàng hóa mới yêu cầu. Bạn sẽ cần chỉ định tên dự án.

 cargo new my_project

Lệnh sẽ tạo một thư mục mới trong thư mục hiện tại chứa các tệp cơ bản bạn cần cho dự án Rust của mình, bao gồm một hàng hóa.toml tệp để quản lý các phụ thuộc của dự án của bạn.

kết quả của việc sử dụng hàng hóa mới

Không gian tên gói Rust

Các gói và thùng là những thành phần thiết yếu trong Rust. Các thùng là các thư viện hoặc tệp nhị phân mà các nhà phát triển Rust có thể sử dụng và biên dịch cho một số mục đích sử dụng cụ thể và các gói là một tập hợp các thùng. Các gói thường chứa một thùng chứa mã có thể tái sử dụng và một tệp nhị phân cung cấp CLI cho thùng thư viện.

Thùng phải chứa các Cargo.toml tệp chứa siêu dữ liệu về gói, chẳng hạn như tên, phiên bản, phần phụ thuộc và tập lệnh xây dựng.

Các gói Rust tuân theo quy ước đặt tên để tránh xung đột đặt tên giữa các gói. Tên gói phải là duy nhất trên toàn cầu, chữ thường và chỉ chứa các chữ cái, chữ số và dấu gạch ngang. Nếu tên gói chứa nhiều từ, hãy tách chúng bằng dấu gạch nối, ví dụ: siêu máy chủ.

Bạn có thể truy cập mã trong không gian tên gói Rust bằng sử dụng từ khóa theo sau là tên gói và thùng.

Đây là một ví dụ về việc nhập một rng chức năng từ một rand thùng:

 use rand::Rng;

Bạn có thể tạo nhiều không gian tên cho các gói. Khi bạn tạo một thư mục, bạn tạo một không gian tên mới mà bạn có thể truy cập bằng ký hiệu dấu chấm để chỉ định đường dẫn đến mã định danh.

Trong Rust, có thể có nhiều không gian tên cho các gói. Khi bạn tạo một thư mục, bạn tạo một không gian tên mới. Để truy cập mã từ một không gian tên khác, bạn sử dụng ký hiệu dấu chấm để chỉ định đường dẫn đến mã định danh.

Đây là một ví dụ về việc truy cập một chức năng từ một không gian tên khác:

 
pub fn folder() -> u32 {
    
    return 0;
}


use folder1::folder;

pub fn directory() {
    
    let folder_func = folder();
}

Chương trình định nghĩa hai mô-đun Rust trong các không gian tên khác nhau, thư mục1thư mục2 tương ứng. Các thư mục1 mô-đun chứa một chức năng công khai thư mục trả về giá trị số nguyên không dấu 32 bit.

Các thư mục2 mô-đun nhập khẩu thư mục chức năng từ thư mục1 không gian tên với sử dụng từ khóa, cho phép danh mục chức năng truy cập vào thư mục chức năng từ thư mục1 mô-đun. Các danh mục chức năng gọi các thư mục hàm và giá trị trả về được gán cho thư mục_func Biến đổi.

Bạn sẽ cần viết hoa tên của số nhận dạng từ một gói hoặc thùng để xuất chúng. Khi bạn xuất mã định danh, bạn làm cho mã đó có thể truy cập được trong các gói khác sử dụng mã.

Đây là một ví dụ về chức năng công khai có thể được xuất.

 
pub fn MyFunction() {
    
}

Bạn cũng sẽ cần phải sử dụng quán rượu từ khóa. Ở Rust, quán rượu từ khóa là viết tắt của công cộng. Khi một hàm, struct, enum, bất kỳ loại dữ liệu Rust hoặc mô-đun nào được đánh dấu bằng từ khóa pub, nó sẽ có thể truy cập được bên ngoài mô-đun của nó. Mục này là riêng tư đối với mô-đun của nó mà không có từ khóa pub và chỉ có thể được truy cập từ bên trong nó.

Xác định các mô-đun để kiểm soát phạm vi và quyền riêng tư

Bạn có thể sử dụng các mô-đun để kiểm soát phạm vi và quyền riêng tư trong các chương trình Rust. Các mô-đun cho phép bạn tổ chức mã thành các đơn vị logic dễ quản lý và bảo trì hơn.

Bạn có thể khai báo các mô-đun với chế độ từ khóa theo sau là tên mô-đun và dấu ngoặc nhọn. Việc xác định một mô-đun mới sẽ tạo ra một không gian tên mới cho nội dung của nó, nghĩa là các hàm, cấu trúc hoặc các mục khác được xác định trong mô-đun chỉ có thể truy cập được trong mô-đun trừ khi bạn xuất chúng một cách rõ ràng.

Các mô-đun giúp ngăn xung đột đặt tên, làm cho mã trực quan dễ hiểu hơn.

Đây là cú pháp cho một mô-đun đơn giản:

 mod my_module {
    
}

Trong mô-đun, bạn có thể xác định các biến, hàm, cấu trúc, enum và các loại khác.

 mod my_module {
    fn add_numbers(a: i32, b: i32) -> i32 {
        a + b
    }
}

Bạn có thể dùng quán rượu từ khóa để xuất hàm và truy cập hàm trong các phần khác của chương trình.

 mod my_module {
    pub fn add_numbers(a: i32, b: i32) -> i32 {
        a + b
    }
}

Bây giờ, bạn có thể gọi thêm_số chức năng từ các phần khác của chương trình của bạn.

Bạn cũng có thể kiểm soát quyền riêng tư của các mô-đun bằng quán rượu từ khóa về định nghĩa mô-đun.

 pub mod my_module {
    pub fn add_numbers(a: i32, b: i32) -> i32 {
        a + b
    }
}

Bây giờ, my_module mô-đun là công khai và bạn có thể truy cập mô-đun từ các mô-đun khác.

Nếu bạn cần làm cho một mô-đun hoặc mục có thể truy cập được vào một mô-đun hoặc tập hợp các mô-đun cụ thể, bạn có thể sử dụng quán rượu (thùng) từ khóa. Các quán rượu (thùng) từ khóa làm cho vật phẩm có thể truy cập được từ các mô-đun trong cùng một thùng chứ không phải từ các mô-đun trong các thùng khác.

 mod my_module {
    pub struct MyStruct {
        pub(crate) some_field: u32,
    }
}

Bây giờ bạn có thể truy cập mục cụ thể (trong trường hợp này, mục some_field lĩnh vực của cấu trúc của tôi struct) trong các phần khác của chương trình của bạn.

 fn main() {
    let my_struct = my_module::MyStruct { some_field: 42 };
    println!("{}", my_struct.some_field);
}

Các my_struct biến là một thể hiện của cấu trúc của tôi cấu trúc. Biến truy cập cấu trúc bằng dấu tách đường dẫn (::). Các chủ yếu chức năng in some_field trường của cấu trúc với inln! vĩ mô.

kết quả của việc truy cập mô-đun từ hàm chính.jpg

Mô hình sở hữu của Rust đảm bảo an toàn cho bộ nhớ

Sắp xếp mã Rust là một cách để đảm bảo mã của bạn dễ bảo trì và hỗ trợ theo thời gian. Sẽ dễ dàng hơn để giải quyết các lỗi và đảm bảo an toàn trong mã được tổ chức tốt tuân theo các quy tắc và quy ước của cộng đồng Rust.

Theo mặc định, Rust đảm bảo các chương trình được an toàn trong bộ nhớ với mô hình quyền sở hữu được tích hợp sẵn. Mô hình quyền sở hữu đảm bảo an toàn cho bộ nhớ bằng cách đảm bảo rằng các biến trong bộ nhớ có một chủ sở hữu duy nhất. Mô hình sở hữu ngăn chặn dấu vết dữ liệu và nhiều loại lỗi bộ nhớ.

Similar Posts

Leave a Reply

Your email address will not be published. Required fields are marked *