บทความนี้เป็นบทความบันทึกการศึกษาภาษา Rust อาจจะมี code เป็นส่วนใหญ่ และผมจะพยายามลงรายละเอียดให้นะ
Rust language เป็นภาษาโปรแกรมเชิงระบบ (system programming language) ที่เน้นความปลอดภัย (safety) และความเร็ว (speed) พัฒนาโดย Mozilla Foundation
จุดเด่นของ Rust language:
- ความปลอดภัย: Rust language ออกแบบมาเพื่อป้องกันปัญหาหน่วยความจำรั่ว (memory leaks) และ dangling pointers ซึ่งเป็นปัญหาใหญ่ในภาษาโปรแกรมอื่น ๆ
- ความเร็ว: Rust language สามารถ compile ลงเป็น native code ทำให้ทำงานได้รวดเร็วเทียบเท่าภาษา C++
- ความทันสมัย: Rust language เป็นภาษาโปรแกรมที่ใหม่และได้รับการพัฒนาอย่างต่อเนื่อง มี ecosystem ที่เติบโต rapidly
- ** expressive**: Rust language มี syntax ที่อ่านง่าย เขียนง่าย เข้าใจง่าย
Install Rust
เริ่มต้นที่ติดตั้งภาษา Rust กันก่อน ซึ่งสามารถเข้าไป download และติดตั้งได้ตามลิงค์นี้ https://www.rust-lang.org/tools/install
ซึ่งหลักงจากติดตั้งแล้วอย่าลืม Configuring PATH
environment variable ด้วยนะ ซึ่งใน Rust development environment จะมีเครื่องมือทั้งหมดติดตั้งไว้ในไดเร็กทอรี ~/.cargo/bin
เราสามารถใช้เครื่องมือของ Rust รวมถึง rustc, cargo และ rustup
หลังจากที่ติดตั้งและตั้งค่าทุกอย่างแล้ว ให้ลอง run command เพื่อ เช็คดูว่าได้ไหม
rustc --version
rustc, cargo และ rustup
rustc
rustc ย่อมาจาก Rust Compiler เป็นโปรแกรม compiler ที่ใช้แปลงโค้ดภาษา Rust ไปเป็น native code ที่สามารถทำงานบน CPU ของเครื่องได้โดยตรง
หน้าที่หลักของ rustc:
- ตรวจสอบ syntax ของโค้ด Rust
- แปลงโค้ด Rust ไปเป็น LLVM bitcode
- Optimize LLVM bitcode
- Generate native code
การใช้งาน rustc:
Rustc สามารถใช้งานผ่าน command line โดยพิมพ์คำสั่ง rustc
ตามด้วยชื่อไฟล์โค้ด Rust ตัวอย่างเช่น
คำสั่งนี้จะ compile ไฟล์ hello_world.rs
ไปเป็น executable file ชื่อ hello_world
ตัวเลือกเพิ่มเติม:
Rustc มีตัวเลือกเพิ่มเติมมากมายที่สามารถใช้ควบคุมการ compile ตัวอย่างเช่น
-o
: ระบุชื่อ output file-C
: ระบุ compiler flag-L
: ระบุ path ไปยัง library
ดูเพิ่มเติมที่ https://doc.rust-lang.org/rustc/
cargo
Cargo เป็น build system สำหรับภาษา Rust ช่วยให้ developer สามารถจัดการ project ของ Rust ได้อย่างสะดวก ถ้าบอกให้เข้าใจง่ายๆ มันคือ Package Manager ของ Node และภาษาอื่นๆ นั้นแหละ
หน้าที่หลักของ Cargo:
- Compile โค้ด Rust
- จัดการ dependencies ของ project
- Build project artifacts เช่น executable files, libraries
- Run tests
- Deploy project
การใช้งาน Cargo:
Cargo สามารถใช้งานผ่าน command line โดยพิมพ์คำสั่ง cargo
ตามด้วย subcommand ตัวอย่างเช่น
คำสั่งนี้จะ compile project ของ Rust
subcommand อื่นๆ:
cargo new
: สร้าง project ใหม่cargo run
: รัน executable file ของ projectcargo test
: รัน tests ของ projectcargo doc
: generate documentation ของ project
Cargo.toml:
Cargo ใช้ไฟล์ Cargo.toml
เพื่อกำหนดค่า project ของ Rust ไฟล์ Cargo.toml
ประกอบด้วยข้อมูลต่างๆ เช่น ชื่อ project, เวอร์ชัน, dependencies
ดูเพิ่มเติมที่ https://doc.rust-lang.org/cargo
rustup
rustup เป็นเครื่องมือสำหรับติดตั้งและจัดการ Rust toolchain บนระบบของคุณ Rust toolchain ประกอบด้วยโปรแกรมต่างๆ ที่จำเป็นสำหรับการพัฒนาภาษา Rust เช่น rustc, cargo, และ rustfmt
หน้าที่หลักของ rustup:
- ติดตั้ง Rust toolchain
- อัพเดท Rust toolchain
- เปลี่ยนเวอร์ชันของ Rust toolchain
- ถอนการติดตั้ง Rust toolchain
การใช้งาน rustup:
Rustup สามารถใช้งานผ่าน command line โดยพิมพ์คำสั่ง rustup
ตามด้วย subcommand ตัวอย่างเช่น
rustup install
คำสั่งนี้จะติดตั้ง Rust toolchain เวอร์ชันล่าสุด
subcommand อื่นๆ:
rustup update
: อัพเดท Rust toolchainrustup default
: ตั้งค่าเวอร์ชัน default ของ Rust toolchainrustup uninstall
: ถอนการติดตั้ง Rust toolchain
ดูเพิ่มเติมที่ https://rustup.rs
Hello World
หลังจากที่ทำความเข้าใจเครื่องมือของ rust กันแล้ว เรามาเริ่มต้นจากอะไรง่ายๆ อย่าง hello world กันก่อนเลย
เริ่มต้นจาก initial project ขึ้นมาก่อน
หลังจากที่ new project แล้ว เราจะได้ folder ชื่อ hello ของโปรเจคเรา
โดย Cargo.toml
จะเป็นไฟล์ที่ตัว cargo ใช้สำหรับจัดการ package (นึกถึง package.json ใน node) และ source code จะอยู่ที่ src/main.rs
ลอง build และ run ดูโดยใช้คำสั่ง
cargo build
เราจะได้โฟล์เดอร์ target เพิ่มเข้ามา ซึ่งมันเป็น build folder
ถ้าอยากลอง run โปรเจคดู ให้ใช้คำสั่ง
ซึ่งถ้าหากเราสั่ง cargo run
โดยไม่ได้สั่ง build ตัว cargo ก็จะ build ให้เราก่อนอยู่ดี แต่ตอนทำโปรเจคจริงๆ ยังไงเราก็ต้อง build ก่อน run อยู่แล้ว