முக்கிய உள்ளடக்கத்திற்குச் செல்லவும்
தொகுதி 4 · பாடம் 1 இன் 2பாடத்திட்டத்தில் 7/14~12 min
தொகுதி பாடங்கள் (1/2)

கட்டமைப்புகளை வரையறுத்தல் மற்றும் உடனடியாக உருவாக்குதல்

ரஸ்டில் உள்ள ஸ்ட்ரக்ட்ஸ் (அல்லது கட்டமைப்புகள்) தனிப்பயன் தரவு வகைகளாகும், அவை பல தொடர்புடைய மதிப்புகளை ஒன்றாக தொகுக்க அனுமதிக்கும். அவை பிற மொழிகளில் உள்ள பொருள்கள் அல்லது வகுப்புகளைப் போலவே இருக்கின்றன, ஆனால் பரம்பரை இல்லாமல்.

ஒரு கட்டமைப்பை வரையறுத்தல்

கட்டமைப்பை வரையறுக்க, struct முக்கிய சொல்லைப் பயன்படுத்துகிறோம், அதைத் தொடர்ந்து PascalCase இல் உள்ள பெயரைப் பயன்படுத்துகிறோம். உள்ளே, புலங்களின் பெயர்கள் மற்றும் வகைகளை நாங்கள் வரையறுக்கிறோம்:

Rust
struct User {
    username: String,
    email: String,
    active: bool,
    sign_in_count: u64,
}

ஒரு நிகழ்வை உருவாக்குதல்

ஒரு கட்டமைப்பைப் பயன்படுத்த, குறிப்பிட்ட அனைத்து புலங்களையும் நிரப்புவதன் மூலம் நாம் ஒரு நிகழ்வை உருவாக்க வேண்டும்:

Rust
fn main() {
    let user1 = User {
        email: String::from("alice@example.com"),
        username: String::from("alice123"),
        active: true,
        sign_in_count: 1,
    };

    // Access fields using dot notation
    println!("Is user {} active? {}", user1.username, user1.active);
}

கட்டமைப்பு மாறுதல்

ரஸ்டில், அதன் புலங்களில் ஏதேனும் ஒன்றை நீங்கள் மாற்ற விரும்பினால், முழு நிகழ்வும் மாறக்கூடியதாக (mut) குறிக்கப்பட வேண்டும். சில குறிப்பிட்ட புலங்களை மட்டும் மாற்றக்கூடியதாகக் குறிக்க துரு அனுமதிக்காது:

Rust
fn main() {
    let mut user1 = User {
        email: String::from("alice@example.com"),
        username: String::from("alice123"),
        active: true,
        sign_in_count: 1,
    };

    user1.active = false; // Valid because user1 is mutable!
}

டூப்பிள் ஸ்ட்ரக்ட்ஸ் மற்றும் யூனிட் போன்ற கட்டமைப்புகள்

ரஸ்ட் கிளாசிக் நேம்-ஃபீல்ட் ஸ்ட்ரக்ட்ஸ் தவிர மற்ற இரண்டு struct வடிவங்களையும் ஆதரிக்கிறது:

  1. Tuple Structs: அவற்றுக்கு தொடர்புடைய பெயர் உள்ளது ஆனால் புலங்களில் தனிப்பட்ட பெயர்கள் இல்லை, வகைகள் மட்டுமே. குறிப்பிட்ட வகைகளை வரையறுக்கவும் வேறுபடுத்தவும் அவை பயனுள்ளதாக இருக்கும்:
    Rust
    struct Point(i32, i32, i32);
    let origin = Point(0, 0, 0);
  2. அலகு போன்ற கட்டமைப்புகள்: அவை எந்த புலங்களையும் வரையறுக்கவில்லை. அவை () யூனிட் வகையைப் போல செயல்படுகின்றன. எந்தவொரு தரவையும் சேமிக்காமல் ஒரு வகையின் நடத்தைகளை (பண்புகளை) செயல்படுத்த வேண்டியிருக்கும் போது அவை பயனுள்ளதாக இருக்கும்.

நீங்களே முயற்சி செய்து பாருங்கள்

உடற்பயிற்சி#rust.m4.l1.e1
முயற்சிகள்: 0ஏற்றுகிறது…

முக்கிய புலங்களுடன் மேலே உள்ள பயனர் கட்டமைப்பை வரையறுக்கவும்: பயனர்பெயர் (சரம் வகை) மற்றும் செயலில் (பூல் வகை).

எடிட்டரை ஏற்றுகிறது…
குறிப்பைக் காட்டு

`struct User { username: String, active: bool }`before`main` என எழுதவும்.

3 முயற்சிகளுக்குப் பிறகு தீர்வு கிடைக்கும்

உடற்பயிற்சி#rust.m4.l1.e2
முயற்சிகள்: 0ஏற்றுகிறது…

பயனர்1 ஐ மாற்றக்கூடியதாக மாற்றவும் (பயனர் 1 ஐ மாற்ற அனுமதிக்கவும்) மற்றும் அச்சிடுவதற்கு முன் செயலில் உள்ள புலத்தை தவறு என மாற்றவும்.

எடிட்டரை ஏற்றுகிறது…
குறிப்பைக் காட்டு

`mut`to`let user1`ஐச் சேர்த்து, அதை `let mut user1`என்பதைச் சேர்க்கவும், பின்னர்`user1.active = false;` என்பதைச் செருகவும்.

3 முயற்சிகளுக்குப் பிறகு தீர்வு கிடைக்கும்

உடற்பயிற்சி#rust.m4.l1.e3
முயற்சிகள்: 0ஏற்றுகிறது…

மூன்று i32 புலங்களைக் கொண்ட வண்ணம் என்ற பெயரிடப்பட்ட ஒரு tuple struct ஐ வரையறுக்கவும். முக்கியமாக, 255, 0, மற்றும் 100 ஆகிய மதிப்புகள் கொண்ட நிறத்தை உடனடியாக my_color என்ற மாறிக்கு ஒதுக்கி, அதன் முதல் உறுப்பு (சிவப்பு மதிப்பு) ஐ println ஐப் பயன்படுத்தி அச்சிடவும்.

எடிட்டரை ஏற்றுகிறது…
குறிப்பைக் காட்டு

`struct Color(i32, i32, i32);`உடன் tuple struct ஐ வரையறுக்கவும். முக்கியமாக, அதை`let my_color = Color(255, 0, 100);`என உடனுக்குடன் செய்து, சிவப்பு மதிப்பை`my_color.0` உடன் அச்சிடவும்.

3 முயற்சிகளுக்குப் பிறகு தீர்வு கிடைக்கும்