ساختار تاپلها
اگر نام فیلدها بیاهمیت هستند، میتوانید از ساختار tuple استفاده کنید:
struct Point(i32, i32);
fn main() {
let p = Point(17, 23);
println!("({}, {})", p.0, p.1);
}
این اغلب برایsingle-field wrapper (که newtypes نامیده میشوند) استفاده میشود:
struct PoundsOfForce(f64);
struct Newtons(f64);
fn compute_thruster_force() -> PoundsOfForce {
todo!("از یک دانشمند حوزه موشک در ناسا بپرس")
}
fn set_thruster_force(force: Newtons) {
// ...
}
fn main() {
let force = compute_thruster_force();
set_thruster_force(force);
}
This slide should take about 10 minutes.
- Newtypes یک راه مناسب برای رمزگذاری اطلاعات اضافی در مورد مقدار در یک نوع اولیه (primitive type) است، به عنوان مثال:
- این عدد در برخی واحدها اندازه گیری میشود:
Newtonsدر مثال بالا. - مقدار زمانی که ایجاد شد مقداری اعتبارسنجی را دریافت کرد، بنابراین دیگر لازم نیست در هر بار استفاده دوباره آن را تأیید کنید:
PhoneNumber(String)یاOddNumber(u32).
- این عدد در برخی واحدها اندازه گیری میشود:
- نحوه افزودن مقدار
f64به نوعNewtonsرا با دسترسی به single field در نوع جدید نشان دهید.- Rust معمولاً چیزهای غیر واضح را دوست ندارد، مانند automatic unwrapping یا بهعنوانمثال استفاده از booleanها به عنوان اعداد صحیح.
- مبحث Operator overloading در روز سوم مورد بحث قرار می گیرد (generics).
- این مثال، اشاره ظریفی به شکست مدارگَرد آبوهوای مریخ است.