سیستم نوع
کوروش دارای یک سیستم نوع قوی و گویا است. کامپایلر تبدیل نوع ضمنی را زمانی که ایمن باشد انجام میدهد و زمانی که تبدیلها میتوانند ناایمن یا همراه با اتلاف اطلاعات باشند، نیاز به cast صریح دارد.
تبدیل ضمنی ایمن
اگر یک نوع بتواند بدون از دست دادن اطلاعات به طور ایمن به نوع دیگری تبدیل شود، کوروش تبدیل را به طور خودکار انجام میدهد.
var a: int32 = 42;
var b: int64 = a; // implicit cast from int32 to int64
int32(عدد صحیح علامتدار ۳۲ بیتی) همیشه میتواند درint64(عدد صحیح علامتدار ۶۴ بیتی) جای بگیرد.- کامپایلر این کار را به صورت ضمنی انجام میدهد، بنابراین به نحو خاصی نیاز نیست.
تبدیل ناایمن / صریح
اگر یک تبدیل میتواند ناایمن باشد، کامپایلر نیاز به cast صریح با استفاده از کلیدواژه cast دارد.
var u: uint32 = 10;
var i: int64 = @cast(int64, u); // Explicit unsafe cast from uint32 to int64.
انواع پایه
کوروش مجموعهای از انواع داخلی را برای اعداد، نویسهها، مقادیر بولی و اهداف ویژه ارائه میدهد. اینها بلوکهای سازنده اساسی برنامههای شما هستند.
| Type | Category | Bit Width | Signedness |
|---|---|---|---|
| int | Signed Integer (default) | 32 | Signed |
| int8 | Signed Integer | 8 | Signed |
| int16 | Signed Integer | 16 | Signed |
| int32 | Signed Integer | 32 | Signed |
| int64 | Signed Integer | 64 | Signed |
| int128 | Signed Integer | 128 | Signed |
| uint | Unsigned Integer (default) | 32 | Unsigned |
| uint8 | Unsigned Integer | 8 | Unsigned |
| uint16 | Unsigned Integer | 16 | Unsigned |
| uint32 | Unsigned Integer | 32 | Unsigned |
| uint64 | Unsigned Integer | 64 | Unsigned |
| uint128 | Unsigned Integer | 128 | Unsigned |
| intptr | Pointer-sized Integer | Pointer width | Signed |
| uintptr | Pointer-sized Integer | Pointer width | Unsigned |
| usize | Size / Index Type | Pointer width | Unsigned |
| isize | Size / Index Type | Pointer width | Signed |
انواع ممیز شناور
| Type | Description | Precision |
|---|---|---|
| float16 | 16-bit floating-point number (half precision) | ~3 decimal digits |
| float32 | 32-bit floating-point number (single precision) | ~7 decimal digits |
| float64 | 64-bit floating-point number (double precision) | ~15–16 decimal digits |
| float128 | 128-bit floating-point number (quadruple precision) | ~34 decimal digits |
انواع نویسه و بولی
| Type | Description | Notes |
|---|---|---|
| char | A single character unit (one code unit; multi-byte Unicode not allowed
in | Unsigned; Represents ASCII/byte chars only |
| bool | Boolean values, either | 1-bit storage (typically padded to 8 bits) |
انواع ویژه
| Type | Description | Notes |
|---|---|---|
| void | Represents no value, commonly used for functions that do not return anything. | Return type only |
نامهای مستعار نوع (Type Aliases)
میتوانید برای انواع موجود نام مستعار ایجاد کنید. کامپایلر به طور خودکار این نامها را هنگام استفاده گسترش میدهد.
type rune = uint32;
type my_int = int16;
pub fn main() {
const x: rune = 10;
const y: my_int = 20;
}
توجه: نامهای مستعار نوع را نمیتوان به صورت محلی اعلان کرد. scope و قوانین اعلان آنها بعداً در این اسناد با جزئیات بیشتری پوشش داده خواهد شد.

