inflearn logo

Rust trung cấp thanh lịch (2) - Phần mô-đun

Khi dự án Rust phát triển, chỉ chia mã nguồn thành các tệp thôi sẽ khó quản lý rõ ràng trách nhiệm và phạm vi công khai của mã. Trong bài giảng này, chúng ta sẽ lần lượt tìm hiểu từ sự khác biệt giữa package, crate và module, đến cách sắp xếp tệp, đường dẫn, phạm vi công khai, việc tách thư viện và tệp thực thi, tái công khai, cũng như workspace.

6 học viên đang tham gia khóa học này

Độ khó Trung cấp trở lên

Thời gian Không giới hạn

Rust
Rust
Rust
Rust

Bạn sẽ nhận được điều này sau khi học.

  • Bạn có thể phân biệt sự khác nhau giữa package, crate và module, đồng thời đọc chính xác cấu trúc dự án Rust.

  • Bạn có thể liên kết nhiều tệp vào cây mô-đun bằng khai báo mod.

  • Bạn có thể xây dựng một dự án dễ kiểm thử bằng cách phân chia vai trò giữa thư viện và tệp thực thi.

  • Có thể thiết kế ranh giới giữa các mô-đun và crate dựa trên vai trò và lý do thay đổi.

  • Bạn có thể hoàn thiện thư viện bằng cách kết nối các mô-đun private và chỉ công khai lại những kiểu cùng hàm cần thiết.

Từ việc chỉ chia mã nguồn thành các tệp đến một dự án Rust với ranh giới rõ ràng

Khi dự án phát triển, chỉ biết đoạn mã nằm trong tệp nào là chưa đủ. Bạn cũng phải quyết định mỗi đoạn mã đảm nhận trách nhiệm gì, cần công khai đến đâu và các tệp thực thi khác nhau nên dùng chung đoạn mã nào.

Trong khóa học này, trước tiên chúng ta sẽ tìm hiểu sự khác biệt giữa package, crate và module—những khái niệm thường bị nhầm lẫn. Tiếp đó, bạn sẽ lần lượt học về cây module và cách bố trí tệp, các đường dẫn crate::·self::·super::, use, phạm vi công khai, việc tách thư viện và tệp thực thi, tái công khai bằng pub use, cùng Cargo workspace.

Cuối cùng, bạn sẽ trực tiếp hoàn thiện một thư viện che giấu phần triển khai bên trong của các mô-đun model, parser và report, đồng thời cho phép người dùng bên ngoài sử dụng các kiểu và hàm cần thiết thông qua những đường dẫn ngắn gọn. Mục tiêu của khóa học này không chỉ dừng lại ở việc ghi nhớ cú pháp, mà còn là thiết kế ranh giới cho một dự án Rust dễ thay đổi và thuận tiện sử dụng.

Bạn sẽ học những nội dung như thế này

Phân biệt chính xác package, crate và module

Bạn sẽ học sự khác nhau giữa package do Cargo.toml quản lý, crate là đơn vị biên dịch và module dùng để nhóm mã theo vai trò. Hãy tìm hiểu src/lib.rs, src/main.rssrc/bin lần lượt là điểm bắt đầu của crate nào, đồng thời hiểu cách cấu trúc một thư viện và nhiều tệp thực thi trong cùng một package.

Ngay trong cùng một gói, thư viện và từng tệp thực thi cũng được biên dịch thành các crate khác nhau.

Kết nối và hiểu cây mô-đun với cách sắp xếp tệp

Bạn sẽ học rằng khai báo mod không phải là cú pháp đơn thuần sao chép tệp mà là khai báo liên kết mã vào cây mô-đun. Hãy tìm hiểu sự khác biệt giữa mô-đun nội tuyến, parser.rsparser/mod.rs, đồng thời phân biệt cấu trúc logic của mô-đun cha và mô-đun con với cách sắp xếp thực tế của các tệp mã nguồn.


Cây mô-đun thể hiện mối quan hệ logic giữa các đoạn mã, còn tệp dùng để lưu trữ mã của từng mô-đun.

Hoàn thiện API công khai qua bài thực hành tổng hợp

Kết nối các mã model, parser và report đã được triển khai vào các mô-đun riêng tư, đồng thời tái công khai tại gốc crate chỉ những kiểu và hàm cần thiết cho bên ngoài. Bằng cách lần lượt giải quyết từng thông báo lỗi kiểm thử, bạn sẽ che giấu cấu trúc bên trong và trực tiếp hoàn thiện một API thư viện dễ sử dụng.

Khuyến nghị trước khi tham gia khóa học

Môi trường thực hành

  • Hệ điều hành và phiên bản (OS): macOS, Linux, Windows

  • Công cụ sử dụng: Git, VS Code, Rustup, Cargo

  • Cấu hình PC: Không cần PC có cấu hình cao đặc biệt

Tài liệu học tập

  • Giáo trình học trực tuyến

  • Mã nguồn GitHub

Kiến thức cần có và lưu ý

  • Khuyến nghị bạn học khóa học nhập môn và ứng dụng ngôn ngữ lập trình hiệu năng cao Rust thanh lịch.

  • Khóa học này là một phần của chuỗi Rust trung cấp thanh lịch.

Khuyến nghị cho
những người này

Khóa học này dành cho ai?

  • Dành cho những ai đã hoàn thành khóa nhập môn Rust nhưng vẫn còn nhầm lẫn về sự khác biệt giữa package, crate và module

  • Dành cho những ai đang băn khoăn về tiêu chí phân chia tệp và mô-đun khi dự án phát triển lớn hơn.

  • Những người thường xuyên gặp lỗi về đường dẫn và phạm vi công khai khi sử dụng mod, use, pub

  • Dành cho những ai muốn thiết kế API thư viện dễ sử dụng và che giấu phần triển khai bên trong

Cần biết trước khi bắt đầu?

  • Kiến thức cơ bản về cú pháp Rust

  • Khái niệm cơ bản về quyền sở hữu trong Rust

Xin chào
Đây là hatemogi

Xác minh sự nghiệp

2,120

Học viên

169

Đánh giá

27

Trả lời

4.7

Xếp hạng

8

Các khóa học

Tôi là một lập trình viên backend rất quan tâm đến lập trình hàm. Tôi từng dẫn dắt các đội ngũ phát triển với vai trò Trưởng nhóm phát triển tại Kakao, Kỹ sư cấp cao tại NHN và Trưởng nhóm tại LINE+, đồng thời từng làm Trưởng nhóm phát triển tại startup AI mang tên DINOTICIA và thực hiện các dự án bằng Rust.

Chương trình giảng dạy

Tất cả

10 bài giảng ∙ (54phút)

Ngày đăng: 
Cập nhật lần cuối: 

Đánh giá

Chưa có đủ đánh giá.
Hãy trở thành tác giả của một đánh giá giúp mọi người!

Khóa học khác của hatemogi

Hãy khám phá các khóa học khác của giảng viên!

Khóa học tương tự

Khám phá các khóa học khác trong cùng lĩnh vực!

Ưu đãi có thời hạn

1.057 ₫

24%

236.321 ₫