สนิมหรือสนิมแลง เป็นภาษาโปรแกรมโอเพ่นซอร์สที่ค่อนข้างทันสมัยและทันสมัยนอกจากนี้ยังมีหลายแพลตฟอร์มที่รวดเร็วและ ออกแบบมาเพื่อแทนที่ C และ C ++.
สร้างโดย Mozilla และมีนามธรรมระดับสูงเพื่อเอาใจผู้ที่มาจาก C # และ Java
และนั่นไม่ใช่ทั้งหมด เราสามารถเห็นคุณสมบัติที่น่าสนใจมากมายที่ไม่ปรากฏในภาษาโปรแกรมอื่น ๆเช่นการลดต้นทุนเป็นศูนย์, สัญศาสตร์การเคลื่อนไหว, การรับประกันความปลอดภัยของหน่วยความจำ, เวลาในการดำเนินการที่ลดลงเป็นต้น
เกี่ยวกับ Rust 1.30.0 เวอร์ชันใหม่
ผู้พัฒนา Rust ได้ประกาศเวอร์ชันใหม่ 1.30.0 ภาษาโปรแกรมของคุณ
เวอร์ชันใหม่ของภาษานี้ เพิ่มประเภทใหม่ของมาโครขั้นตอนกำหนดความถูกต้องเป็น "ใช้" และปรับปรุงระบบโมดูล
แอททริบิวต์และมาโครโพรซีเดอร์ที่เหมือนฟังก์ชันเป็นส่วนเสริมใหม่ล่าสุดของ Rust 1.30.0
ก่อนหน้านี้คล้ายกับมาโคร Derive ที่กำหนดเอง แต่ให้คุณกำหนดแอตทริบิวต์ใหม่และที่กำหนดเองได้ เพิ่มเติมแทนแอตทริบิวต์ "# [Derive]"ช่วยให้คุณสามารถสร้างแอตทริบิวต์ที่กำหนดเองใหม่ของคุณเอง
นอกจากนี้พวกเขาไม่เพียง แต่ใช้กับโครงสร้างและ enum เท่านั้น แต่ยังใช้กับฟังก์ชันด้วย
การเปลี่ยนแปลงและนวัตกรรมอื่น ๆ จะอธิบายถึงการประกาศอย่างเป็นทางการของเวอร์ชันปัจจุบันตลอดจนบันทึกประจำรุ่นโดยละเอียดบางประการเกี่ยวกับ Github
เกี่ยวกับ "สนิมอัปเดตเสถียร" อาจเป็นรุ่น Rust ใหม่
Rust 1.30 ขยายสิ่งนี้โดยการเพิ่มความสามารถในการกำหนดประเภทมาโครขั้นสูงอื่น ๆ อีกสองประเภท, "มาโครขั้นตอนที่เหมือนแอตทริบิวต์" และ "มาโครขั้นตอนที่เหมือนฟังก์ชัน"
นอกจากนี้ยังมีความยืดหยุ่นมากขึ้น - ได้มาซึ่งใช้ได้กับโครงสร้างและ enums เท่านั้น แต่แอตทริบิวต์สามารถไปที่อื่นเช่นฟังก์ชัน
ตัวอย่างของการใช้มาโครที่มีลักษณะคล้ายแอตทริบิวต์คุณอาจมีบางอย่างเช่นนี้เมื่อใช้กรอบงานเว็บแอปพลิเคชัน
มาโครขั้นตอนที่เหมือนฟังก์ชันกำหนดมาโครที่ดูเหมือนการเรียกใช้ฟังก์ชัน ในกรณีของ SQL อาจเป็นดังนี้:
let sql = sql! (SELECT * FROM posts WHERE id = 1);
มาโครซึ่งเป็นที่รู้จักโดยเครื่องหมายอัศเจรีย์จะแยกวิเคราะห์คำสั่ง SQL ที่ฝังไว้และตรวจสอบความถูกต้องทางวากยสัมพันธ์ตามประกาศเวอร์ชันใหม่ สามารถกำหนดได้ผ่าน:
# [Proc_macro] pub fn sql (input: TokenStream) -> TokenStream {...}
ที่นี่มาโครที่เหมือนฟังก์ชันจะเป็นไปตาม Derive macro โดยการประเมินโค้ดในวงเล็บและส่งคืนโค้ดที่จะสร้าง
ในเวลาเดียวกันสัญกรณ์ข้างต้น "# [Macro_use]" เคยใช้มาโครกล่องภายนอก แทนที่การใช้ "use"
ปรับปรุงระบบโมดูล
สำคัญไม่น้อย นักพัฒนาได้ปรับปรุงระบบโมดูลหรือเปลี่ยนแปลงกฎไวยากรณ์ที่ยุ่งยากและผิดปกติ
จนถึงขณะนี้ปัญหาเกิดขึ้นเมื่อนักพัฒนาย้ายฟังก์ชันไปยังโมดูลย่อยโดยไม่มีคำนำหน้า "ใช้" อย่างชัดเจน
สนิมเพิ่งตรวจสอบเส้นทางเพื่อตรวจจับโดยอัตโนมัติว่าเป็นกล่องภายนอกหรือไม่ หากเป็นเช่นนั้นระบบจะใช้โดยไม่คำนึงถึงตำแหน่งปัจจุบันในลำดับชั้นของโมดูล
สนิมยังปรับให้เข้ากับการใช้คำหลัก«ลัง». ตัวอย่างเช่น "use crate :: foo :: bar;" บ่งชี้ว่าเส้นทางไปยังฟังก์ชัน "bar" เริ่มต้นจากโมดูล foo ในไดเร็กทอรีรากของกล่องไม่ใช่จากไดเร็กทอรีปัจจุบัน
ตัวอย่างเช่นช่วยให้สามารถเรียกใช้ฟังก์ชันของโมดูลหมายเลข 1 นอกฟังก์ชันของโมดูลหมายเลข 2 ได้โดยไม่ต้องใช้ "ใช้"
จะติดตั้ง Rust 1.30.0 บน Linux ได้อย่างไร?
สำหรับผู้ที่สนใจติดตั้ง Rust บนระบบควรดาวน์โหลดแพ็คเกจที่จำเป็นใน distro ของเราสำหรับสิ่งนี้เราจะใช้ curl:
curl https://sh.rustup.rs -sSf | sh
ด้วยเหตุนี้เราจึงเข้าถึงไซต์และเรียกใช้สคริปต์
ตัวเลือกต่างๆจะเปิดให้เราในเทอร์มินัลของเราและเราต้องตอบอย่างเหมาะสม คุณต้องกด 1 เพื่อดำเนินการติดตั้งต่อด้วยค่าเริ่มต้นซึ่งแนะนำสำหรับส่วนใหญ่
เมื่อเสร็จแล้วเราสามารถกำหนดค่าเชลล์ปัจจุบันของเราให้เริ่มทำงานได้:
source $HOME/.cargo/env
และเริ่มใช้งานได้เลย ตัวอย่างเช่นหากคุณต้องการดูเวอร์ชันที่คุณเพิ่งติดตั้งและตรวจสอบว่าทุกอย่างเรียบร้อยดี:
rustc --version
หากคุณติดตั้ง Rust และต้องการอัปเดตเป็นเวอร์ชันใหม่คุณต้องพิมพ์:
rustup update stable