اندازهی قلم متن
تخمین مدت زمان مطالعهی مطلب:
سه دقیقه
Rust، زبان برنامه نویسی سیستمی است که برای ایمنی، همزمانی و عملکرد طراحی شدهاست و همین جهت به یک انتخاب محبوب برای توسعهی نرم افزارهای مدرن تبدیل شدهاست. struct یکی از بلوکهای ساختمانی اساسی در Rust ساختار است که مخفف کلمهی 'structure' است. ساختارها، انواع دادههای سفارشی هستند که به توسعه دهندگان اجازه میدهند تا دادههای مرتبط را به شیوهای تمیز و کارآمد، با هم گروه بندی کنند. در این مقاله، قدرت و انعطافپذیری سازهها را در Rust، بررسی میکنیم و یاد میگیریم که چگونه، بهطور مؤثری از آنها در پروژههای Rust خود استفاده کنیم.
برای ایجاد یک نمونه از یک ساختار تاپل، از نام و مقادیر، داخل پرانتز استفاده کنید:
تعریف struct
برای تعریف struct در Rust، از کلمهی کلیدی struct استفاده کنید و به دنبال آن، نام ساختار و فیلدهای آن در براکتهایی باز و بسته محصور میشود. هر فیلد باید یک نام و یک نوع داشته باشد که با : از هم جدا شدهاند. به عنوان مثال در اینجا یک ساختار ساده، نشان دهندهی یک نقطهی دو بعدی است:
struct Point { x: f64, y: f64, }
نمونه مقدار دهی struct :
let point = Point { x: 1.0, y: 2.0 };
دسترسی به فیلدهای struct :
برای دسترسی به فیلدهای یک struct ، از علامت نقطه استفاده کنید:
let x = point.x; let y = point.y;
نمونه های struct قابل تغییر
برای ایجاد یک نمونهی قابل تغییر از یک struct ، از کلمهی کلیدی mut استفاده کنید که به شما امکان میدهد تا مقادیر فیلدها را تغییر دهید:
let mut point = Point { x: 1.0, y: 2.0 }; point.x = 3.0; point.y = 4.0;
Tuple Struct
Rust همچنین از ساختارهای tuple نیز پشتیبانی میکند که ساختارهایی بدون نام فیلدها هستند. آنها زمانی مفید هستند که میخواهید یک ساختار را با تعداد کمی فیلد ایجاد کنید و نیازی به نامگذاری صریح آنها ندارید. برای تعریف ساختار tuple، از کلمهی کلیدی struct و به دنبال آن، نام و انواع فیلدهای داخل پرانتز استفاده کنید:
struct Color(u8, u8, u8);
let red = Color(255, 0, 0);
Unit Struct
unit struct یک struct بدون هیچ فیلدی است. برای تعریف ساختار واحد، از کلمهی کلیدی struct و به دنبال آن نام و نقطه ویرگول استفاده کنید:
struct Jump; struct Crouch; struct Attack; struct Character { name: String, } fn perform_action(character: &Character, action: &dyn Any) { if action.is::<Jump>() { println!("{} jumps!", character.name); } else if action.is::<Crouch>() { println!("{} crouches!", character.name); } else if action.is::<Attack>() { println!("{} attacks!", character.name); } else { println!("{} does nothing...", character.name); } } fn main() { let character = Character { name: "John Doe".to_string(), }; perform_action(&character, &Jump); perform_action(&character, &Crouch); perform_action(&character, &Attack); }
Structs in Rust روشی قدرتمند و انعطافپذیر را برای تعریف انواع دادههای سفارشی که دادههای مرتبط را با هم گروهبندی میکنند، ارائه میکند. آنها با کپسوله کردن دادهها و عملکردهای مرتبط، به ایجاد کد تمیز و قابل نگهداری کمک میکنند. در این مقاله، ما اصول اولیه تعریف، نمونه سازی و دسترسی به ساختارها و همچنین موضوعات پیشرفتهای مانند ساختارهای tuple ، unit struct و را بررسی کردیم. با درک کاملی از ساختارها، میتوانید پتانسیل کامل Rust را در پروژههای خود آزمایش کنید و نرمافزاری کارآمد و ایمن بسازید.