انواع داده های بومی Rust را بشناسید تا بتوانید از آنها به طور موثر در برنامه خود استفاده کنید.
Rust یک زبان برنامه نویسی مدرن با تایپ ایستا است که برای عملکرد، قابلیت اطمینان و امنیت طراحی شده است. مانند سایر زبانهای دارای تایپ استاتیک، در زمان کامپایل انواع دادههای Rust را اعلام میکنید. این باعث میشود قبل از اجرای کد، خطاهای نوع را راحتتر دریافت کنید.
Rust انواع اسکالر، ترکیبی، مرجع، ساختارها، enums و رشته ها را ارائه می دهد. استنتاج نوع آن عملکردی را برای نوشتن کد مختصر و در عین حال حفظ ایمنی یک زبان تایپ شده ایستا فراهم می کند.
اعداد صحیح در Rust
Rust انواع اعداد صحیح علامت دار و بدون علامت را ارائه می دهد که بر اساس تعداد بیت ها طبقه بندی می شوند. انواع اعداد صحیح امضا شده i8، i16، i32 و i64 هستند که به ترتیب اعداد صحیح امضا شده 8 بیتی، 16 بیتی، 32 بیتی و 64 بیتی را نشان می دهند. همچنین از انواع اعداد صحیح بدون علامت U8، u16، u32، و u64 پشتیبانی می کند که نشان دهنده اعداد صحیح بدون علامت 8 بیتی، 16 بیتی، 32 بیتی و 64 بیتی است.
// signed integers
let a: i8 = -10;
let b: i16 = -2048;
let c: i32 = -2147483648;
let d: i64 = -9223372036854775808;
// unsigned integers
let e: u8 = 255;
let f: u16 = 65535;
let g: u32 = 4294967295;
let h: u64 = 18446744073709551615;
Rust به طور پیش فرض از نوع i32 برای اعداد صحیح استفاده می کند.
انواع نقطه شناور زنگ
Rust f32 و f64 را بهعنوان انواع ممیز شناور ارائه میکند که اعداد نقطه شناور با دقت تکدقیق و دوگانه را نشان میدهند. نوع f32 از 32 بیت برای ذخیره مقادیر استفاده می کند و نوع f64 از 64 بیت استفاده می کند.
اعداد ممیز شناور در Rust از استاندارد IEEE 754 برای محاسبات ممیز شناور پیروی می کنند.
let a = 3.14159265358979323_f32;
let b = 2.718281828459045235_f64;
استفاده از Rust Booleans
Rust یک نوع bool برای نمایش مقادیر درست یا نادرست ارائه می دهد. بولین ها اغلب در دستورات جریان شرطی و کنترلی برای تصمیم گیری برنامه استفاده می شوند.
let variable_1: bool = true;
let variable_2: bool = false;
می توانید مقادیر بولی را با عملگر برابری == و عملگر نابرابری != مقایسه کنید. Rust عملگرهای مقایسه، <، >، <= و >= را برای مقادیر bool تعریف نمی کند.
let variable_1: bool = true;
let variable_2: bool = false;
if variable_1 == variable_2 {
println!("variable_1 is equal to variable_2");
} else if variable_1 != variable_2 {
println!("variable_1 is not equal to variable_2");
}
نوع Char
نوع Rust char یک مقدار اسکالر یونیکد را نشان می دهد که می تواند هر کاراکتری را در استاندارد یونیکد نشان دهد. شما می توانید یک مقدار کاراکتر را با استفاده از نقل قول های تکی مشخص کنید.
// Declaring a char value
let c = 'a';
نوع کاراکتر برای کار با ایموجی ها در Rust مفید است.
تاپل ها در رست
ساختار داده تاپل به شما امکان می دهد بیش از یک مقدار را در یک مقدار ترکیبی واحد گروه بندی کنید. این مقادیر می توانند نوع مشابه یا انواع مختلفی داشته باشند. میتوانید تاپلها را با نوشتن آنها بهعنوان فهرستی از مقادیر جدا شده با کاما که با پرانتز احاطه شدهاند، اعلام کنید.
در اینجا نحوه تعریف یک تاپل با اعداد صحیح 32 بیتی، رشته ها و مقادیر float64 آمده است.
let tup: (i32, &str, f64) = (500, "Hello", 3.14);
تاپل ها طول ثابتی دارند و می توانید از آنها برای برگرداندن چندین مقدار از یک تابع یا ارسال چندین مقدار به توابع به عنوان یک آرگومان استفاده کنید.
میتوانید با تخریب ساختار یک تاپل با استفاده از تطبیق الگو یا دسترسی مستقیم به عناصر جداگانه با استفاده از دستور نقطه (.) و یک فهرست، به عناصر جداگانه دسترسی پیدا کنید.
در اینجا نحوه دسترسی به عناصر جداگانه یک ساختار با استفاده از تطبیق الگو آورده شده است:
let my_tuple = (10, "Hello, World!", false);
let (x, y, z) = my_tuple;
println!("The first element is: {}", x);
println!("The second element is: {}", y);
println!("The third element is: {}", z);
در اینجا نحوه دسترسی به عناصر جداگانه با استفاده از علامت نقطه آورده شده است:
let my_tuple = (10, "Hello, World!", false);
println!("The first element is: {}", my_tuple.0);
println!("The second element is: {}", my_tuple.1);
println!("The third element is: {}", my_tuple.2);
تاپل ها هنگام گروه بندی داده های مرتبط به یک مقدار بسیار مفید هستند. آنها همچنین می توانند خوانایی کد شما را در صورت استفاده کم از آنها بهبود بخشند.
آرایه ها در Rust
آرایه مجموعه ای از عناصر از یک نوع با طول ثابت است. شما آرایههای Rust را بهعنوان فهرستی از مقادیر با پرانتز مربع مینویسید که با کاما از هم جدا شدهاند.
در اینجا چگونه می توانید آرایه ها را در Rust اعلام کنید:
let arr = [1, 2, 3, 4, 5];
شما نمی توانید تعداد عناصر موجود در یک آرایه را پس از اعلام آن تغییر دهید، اما می توانید با استفاده از نمایه سازی به عناصر جداگانه یک آرایه دسترسی داشته باشید، آن را تغییر دهید و دستکاری کنید.
let mut my_array = [1, 2, 3, 4, 5];
// Accessing elements
println!("The first element is: {}", my_array[0]);
// Modifying elements
my_array[0] = 100;
println!("The first element after modification is: {}", my_array[0]);
// Looping over an array and manipulating elements
for i in 0..my_array.len() {
my_array[i] *= 2;
}
// printing the array
println!("The array after manipulation: {:?}", my_array);
Rust Array ها در پشته ذخیره می شوند و یک تخصیص حافظه پیوسته دارند، بنابراین دسترسی به عناصر یک آرایه سریع و کارآمد است. این باعث میشود آرایهها برای موقعیتهایی مناسب باشند که نیاز به ذخیره و پردازش بسیاری از عناصر دارید.
کار با برش های زنگ
برش یک ساختار داده است که امکان ارجاع به دنباله ای از عناصر را در یک مجموعه فراهم می کند. برش ها با نوع &[T] نشان داده می شوند، که در آن T نوع عناصر ذخیره شده در برش است.
fn main() {
// declare an array
let my_array = [1, 2, 3, 4, 5];
// create a slice from the array
let my_slice = &my_array[1..3];
// print the slice
println!("Slice: {:?}", my_slice);
}
توجه کنید که چگونه نحو محدوده، ..، یک برش از یک آرایه را با استفاده از شاخص شروع و یک شاخص بزرگتر از انتهای آن استخراج می کند:
برش ها پویا هستند، بنابراین Rust می تواند طول آنها را در زمان اجرا تعیین کند. شما همچنین می توانید برش ها را به عنوان آرگومان به توابع بدون نیاز به تخصیص پشته ارسال کنید.
شما معمولاً از برش ها برای عملیات رشته و انتقال زیرمجموعه های داده به توابع استفاده می کنید. آنها ابزاری قدرتمند و کارآمد برای مدیریت مجموعه ها در Rust هستند که جایگزینی انعطاف پذیرتر برای آرایه ها ارائه می دهند.
میتوانید برنامههای وب Frontend با WebAssembly را در Rust بسازید
دانش انواع داده ها برای سفر Rust شما بسیار مهم است زیرا هنگام ساخت برنامه ها از آنها برای اکثر عملیات استفاده خواهید کرد.
WebAssembly یک فرمت باینری سطح پایین است که بر روی مرورگرهای وب مدرن با عملکرد تقریباً بومی اجرا می شود. این به شما امکان می دهد کد را به زبان های مختلف بنویسید و آن را به WebAssembly انتقال دهید.
WebAssembly از طریق Rust در حال پذیرش است. فریمورکهای زیادی مانند Yew، Sycamore و Seed وجود دارد که میتوانید از آنها برای ساخت فرانتاندهای مبتنی بر WebAssembly با Rust استفاده کنید.