สนิม - โมดูล
กลุ่มของรหัสตรรกะเรียกว่าโมดูล หลายโมดูลถูกรวบรวมเป็นหน่วยที่เรียกว่าcrate. โปรแกรมสนิมอาจมีลังไบนารีหรือลังห้องสมุด ลังไบนารีเป็นโปรเจ็กต์ปฏิบัติการที่มีเมธอดmain () ลังไลบรารีคือกลุ่มของส่วนประกอบที่สามารถนำกลับมาใช้ในโครงการอื่นได้ ซึ่งแตกต่างจากลังไบนารีลังไลบรารีไม่มีจุดเข้าใช้งาน (main () วิธีการ) เครื่องมือขนส่งสินค้าใช้ในการจัดการลังใน Rust ตัวอย่างเช่นโมดูลเครือข่ายประกอบด้วยฟังก์ชันที่เกี่ยวข้องกับระบบเครือข่ายและโมดูลกราฟิกมีฟังก์ชันที่เกี่ยวข้องกับการวาดภาพ โมดูลคล้ายกับเนมสเปซในภาษาโปรแกรมอื่น ๆ ลังของบุคคลที่สามสามารถดาวน์โหลดได้โดยใช้การขนส่งสินค้าจากcrates.io
ซีเนียร์ No | ข้อกำหนดและคำอธิบาย |
---|---|
1 | crate เป็นหน่วยคอมไพล์ใน Rust; Crate ถูกรวบรวมเป็นไบนารีหรือไลบรารี |
2 | cargo เครื่องมือจัดการแพคเกจ Rust อย่างเป็นทางการสำหรับลัง |
3 | module จัดกลุ่มโค้ดอย่างมีเหตุผลภายในลัง |
4 | crates.io การลงทะเบียนแพ็คเกจ Rust อย่างเป็นทางการ |
ไวยากรณ์
//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() {
}
}
โมดูลสามารถเป็นแบบสาธารณะหรือส่วนตัว ส่วนประกอบในโมดูลส่วนตัวไม่สามารถเข้าถึงได้โดยโมดูลอื่น โมดูลใน Rust เป็นแบบส่วนตัวโดยค่าเริ่มต้น ในทางตรงกันข้ามโมดูลอื่น ๆ สามารถเข้าถึงฟังก์ชันในโมดูลสาธารณะได้ โมดูลควรขึ้นต้นด้วยpubคีย์เวิร์ดเพื่อเผยแพร่สู่สาธารณะ ฟังก์ชันภายในโมดูลสาธารณะต้องเปิดเผยต่อสาธารณะด้วย
ภาพประกอบ: การกำหนดโมดูล
ตัวอย่างที่กำหนดโมดูลสาธารณะ - ภาพยนตร์ โมดูลมีฟังก์ชันplay ()ที่ยอมรับพารามิเตอร์และพิมพ์ค่า
pub mod movies {
pub fn play(name:String) {
println!("Playing movie {}",name);
}
}
fn main(){
movies::play("Herold and Kumar".to_string());
}
เอาต์พุต
Playing movie Herold and Kumar
ใช้คำหลัก
ใช้คำหลักที่จะช่วยให้นำเข้าโมดูลสาธารณะ
ไวยากรณ์
use public_module_name::function_name;
ภาพประกอบ
pub mod movies {
pub fn play(name:String) {
println!("Playing movie {}",name);
}
}
use movies::play;
fn main(){
play("Herold and Kumar ".to_string());
}
เอาต์พุต
Playing movie Herold and Kumar
โมดูลที่ซ้อนกัน
โมดูลสามารถซ้อนกันได้ ตลกโมดูลซ้อนในภาษาอังกฤษโมดูลซึ่งจะซ้อนกันต่อไปในภาพยนตร์โมดูล ตัวอย่างที่ให้ไว้ด้านล่างกำหนดการเล่นฟังก์ชันภายในโมดูลภาพยนตร์ / ภาษาอังกฤษ / ตลก
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());
}
เอาต์พุต
Playing comedy movie Herold and Kumar
Playing comedy movie The Hangover
Playing comedy movie Airplane!
ภาพประกอบ - สร้างกล่องห้องสมุดและบริโภคในลังไบนารี
ให้เราสร้างลังห้องสมุดชื่อ movie_libซึ่งมีโมดูล movies. เพื่อสร้างไฟล์movie_lib ลังห้องสมุดเราจะใช้เครื่องมือ cargo.
ขั้นตอนที่ 1 - สร้างโฟลเดอร์โครงการ
สร้างโฟลเดอร์ภาพยนตร์แอปตามโฟลเดอร์ย่อยภาพยนตร์ lib หลังจากสร้างโฟลเดอร์และโฟลเดอร์ย่อยแล้วให้สร้างไฟล์srcโฟลเดอร์และไฟล์ Cargo.toml ในไดเร็กทอรีนี้ รหัสที่มาควรจะไปในโฟลเดอร์ src สร้างไฟล์ lib.rs และ movies.rs ในโฟลเดอร์ src Cargo.tomlไฟล์จะประกอบด้วยข้อมูลเมตาของโครงการเช่นหมายเลขรุ่นชื่อผู้เขียน ฯลฯ
โครงสร้างไดเรกทอรีโครงการจะเป็นดังที่แสดงด้านล่าง -
movie-app
movie-lib/
-->Cargo.toml
-->src/
lib.rs
movies.rs
ขั้นตอนที่ 2 - แก้ไขไฟล์ Cargo.toml เพื่อเพิ่มข้อมูลเมตาของโครงการ
[package]
name = "movies_lib"
version = "0.1.0"
authors = ["Mohtashim"]
ขั้นตอนที่ 3 - แก้ไขไฟล์ lib.rs
เพิ่มนิยามโมดูลต่อไปนี้ให้กับไฟล์นี้
pub mod movies;
บรรทัดด้านบนสร้างโมดูลสาธารณะ - movies.
ขั้นตอนที่ 4 - แก้ไขไฟล์ movies.rs
ไฟล์นี้จะกำหนดฟังก์ชันทั้งหมดสำหรับโมดูลภาพยนตร์
pub fn play(name:String){
println!("Playing movie {} :movies-app",name);
}
โค้ดด้านบนกำหนดฟังก์ชัน play() ที่ยอมรับพารามิเตอร์และพิมพ์ไปยังคอนโซล
ขั้นตอนที่ 5 - สร้างลังห้องสมุด
สร้างแอปโดยใช้ไฟล์ cargo buildคำสั่งเพื่อตรวจสอบว่าลังไลบรารีมีโครงสร้างอย่างถูกต้องหรือไม่ ตรวจสอบให้แน่ใจว่าคุณอยู่ที่รากของโปรเจ็กต์ - โฟลเดอร์แอพภาพยนตร์ ข้อความต่อไปนี้จะแสดงในเทอร์มินัลหากการสร้างสำเร็จ
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
ขั้นตอนที่ 6 - สร้างแอปพลิเคชันทดสอบ
สร้างโฟลเดอร์อื่น movie-lib-testในโฟลเดอร์ movie-app ตามด้วยไฟล์ Cargo.toml และโฟลเดอร์ src โครงการนี้ควรมีวิธีการหลักเนื่องจากเป็นลังไบนารีซึ่งจะใช้ลังไลบรารีที่สร้างขึ้นก่อนหน้านี้ สร้างไฟล์ main.rs ในโฟลเดอร์ src โครงสร้างโฟลเดอร์จะเป็นดังรูป
movie-app
movie-lib
// already completed
movie-lib-test/
-->Cargo.toml
-->src/
main.rs
ขั้นตอนที่ 7 - เพิ่มสิ่งต่อไปนี้ในไฟล์ Cargo.toml
[package]
name = "test_for_movie_lib"
version = "0.1.0"
authors = ["Mohtashim"]
[dependencies]
movies_lib = { path = "../movie-lib" }
NOTE- เส้นทางไปยังโฟลเดอร์ไลบรารีถูกตั้งค่าเป็นการอ้างอิง แผนภาพต่อไปนี้แสดงเนื้อหาของทั้งสองโครงการ
ขั้นตอนที่ 8 - เพิ่มสิ่งต่อไปนี้ในไฟล์ main.rs
extern crate movies_lib;
use movies_lib::movies::play;
fn main() {
println!("inside main of test ");
play("Tutorialspoint".to_string())
}
โค้ดด้านบนนำเข้าแพ็กเกจภายนอกที่เรียกว่า movies_lib ตรวจสอบ Cargo.toml ของโครงการปัจจุบันเพื่อตรวจสอบชื่อลัง
ขั้นตอนที่ 9 - การใช้งานการสร้างสินค้าและการขนส่งสินค้า
เราจะใช้การสร้างสินค้าและการขนส่งสินค้าเพื่อสร้างโครงการไบนารีและดำเนินการดังที่แสดงด้านล่าง -