ساختارهای نامدار
مانند C و C++، زبان Rust از ساختارهای سفارشی پشتیبانی میکند:
struct Person {
name: String,
age: u8,
}
fn describe(person: &Person) {
println!("{} {} ساله است", person.name, person.age);
}
fn main() {
let mut peter = Person { name: String::from("پیتر"), age: 27 };
describe(&peter);
peter.age = 28;
describe(&peter);
let name = String::from("ایوری");
let age = 39;
let avery = Person { name, age };
describe(&avery);
let jackie = Person { name: String::from("جکی"), ..avery };
describe(&jackie);
}
This slide should take about 10 minutes.
نکات کلیدی:
- ساختارها (Structs) در Rust مانند C یا C++ عمل میکنند.
- مانند C++ و برخلاف C، برای تعریف یک نوع نیازی به
typedefنیست. - برخلاف C++، در Rust بین ساختارها ارثبری وجود ندارد.
- مانند C++ و برخلاف C، برای تعریف یک نوع نیازی به
- این زمان مناسبی است تا به مردمان اطلاع دهیم که انواع مختلفی از ساختارها وجود دارد.
- ساختارهای بدون اندازه (مانند
struct Foo;) ممکن است زمانی استفاده شوند که میخواهید یک صفت (trait) را بر روی یک نوع پیادهسازی کنید، اما دادهای ندارید که بخواهید در خود مقدار ذخیره کنید. - اسلاید بعدی ساختارهای تاپل (Tuple structs) را معرفی خواهد کرد، که زمانی استفاده میشوند که نام فیلدها مهم نیستند.
- ساختارهای بدون اندازه (مانند
- اگر از قبل متغیرهایی با نامهای مناسب دارید، میتوانید ساختار را با استفاده از یک روش میانبر ایجاد کنید.
- سینتکس
..averyبه ما اجازه میدهد که اکثر فیلدها را از ساختار قدیمی کپی کنیم بدون اینکه همه آنها را صریحاً تایپ کنیم. این باید همیشه آخرین عنصر باشد.