บทความนี้เป็นบทความบันทึกการศึกษาภาษา 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 ตัวอย่างเช่น
rustc hello_world.rs
rustc command
คำสั่งนี้จะ 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 ตัวอย่างเช่น
cargo build
example cargo command
คำสั่งนี้จะ 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 ขึ้นมาก่อน
cargo new hello
initial project
หลังจากที่ new project แล้ว เราจะได้ folder ชื่อ hello ของโปรเจคเรา
![](https://nutshell.work/content/images/2024/02/Screenshot-2567-02-29-at-16.30.53.png)
โดย Cargo.toml
จะเป็นไฟล์ที่ตัว cargo ใช้สำหรับจัดการ package (นึกถึง package.json ใน node) และ source code จะอยู่ที่ src/main.rs
![](https://nutshell.work/content/images/2024/02/2567-02-29-16.41.34.png)
ลอง build และ run ดูโดยใช้คำสั่ง
cargo build
เราจะได้โฟล์เดอร์ target เพิ่มเข้ามา ซึ่งมันเป็น build folder
![](https://nutshell.work/content/images/2024/02/2567-02-29--16.35.09.png)
ถ้าอยากลอง run โปรเจคดู ให้ใช้คำสั่ง
cargo run
run project
![](https://nutshell.work/content/images/2024/02/2567-02-29-16.39.04.png)
ซึ่งถ้าหากเราสั่ง cargo run
โดยไม่ได้สั่ง build ตัว cargo ก็จะ build ให้เราก่อนอยู่ดี แต่ตอนทำโปรเจคจริงๆ ยังไงเราก็ต้อง build ก่อน run อยู่แล้ว