← Back to Rust Course | Chapter 3: Control Flow | Lesson 6 of 7

Value के साथ Break करना

आप एक break को result handover करा सकते हैं, ताकि loop खुद एक सवाल का answer बन जाए।
Syntax
rust
let name = loop {
    // body
    if condition {
        break value;
    }
};

Returning a Value on Break

जब एक loop को break some_value; से बाहर निकाला जाता है, वह value पूरे loop expression का result बन जाती है, जिसे फिर एक variable में store किया जा सकता है।

उदाहरण: Returning a Value on Break

markup
// Entry point: execution of the program starts here
fn main() {
    // Declare a mutable variable `counter`, initialized to `0`
    let mut counter = 0;
    // Declare an immutable variable `result`; its value comes from the block below
    let result = loop {
        counter += 1;
        // Check whether `counter == 10`
        if counter == 10 {
            break counter;
        }
    };
    // Print "Loop returned: {}" to the console, substituting in `result` (with a trailing newline)
    println!("Loop returned: {}", result);
}

Multiple break Points

एक single loop में अलग-अलग code paths पर एक से ज़्यादा break statements हो सकते हैं, जब तक उनमें से हर एक एक जैसे type की value produce करे।

उदाहरण: Multiple break Points

markup
// Entry point: execution of the program starts here
fn main() {
    // Declare a mutable variable `n`, initialized to `1`
    let mut n = 1;
    // Declare an immutable variable `outcome`; its value comes from the block below
    let outcome = loop {
        n *= 2;
        // Check whether `n > 100`
        if n > 100 {
            break "too big";
        }
        // Check whether `n == 64`
        if n == 64 {
            break "found sixty-four";
        }
    };
    // Print "{}" to the console, substituting in `outcome` (with a trailing newline)
    println!("{}", outcome);
}

Why Only loop Supports This

while और for loops भी इसलिए खत्म हो सकते हैं क्योंकि उनका condition false हो गया या iterator खत्म हो गया, इसलिए return करने के लिए कोई single guaranteed exit value नहीं है। loop का कोई implicit exit नहीं है, इसलिए break value unambiguous है।

उदाहरण: Why Only loop Supports This

markup
// Entry point: execution of the program starts here
fn main() {
    // Declare an immutable variable `target`, set to `5`
    let target = 5;
    // Declare a mutable variable `current`, initialized to `0`
    let mut current = 0;
    // Declare an immutable variable `found_at`; its value comes from the block below
    let found_at = loop {
        current += 1;
        // Check whether `current == target`
        if current == target {
            break current;
        }
    };
    // Print "Found target at iteration {}" to the console, substituting in `found_at` (with a trailing newline)
    println!("Found target at iteration {}", found_at);
}

Combining with match on the Result

चूंकि break value एक ordinary value produce करता है, आप इसे तुरंत दूसरे expressions के साथ उपयोग कर सकते हैं, जैसे इसे सीधे एक match में feed करना।

उदाहरण: Combining with match on the Result

markup
// Entry point: execution of the program starts here
fn main() {
    // Declare a mutable variable `i`, initialized to `0`
    let mut i = 0;
    // Declare an immutable variable `parity`; its value comes from the block below
    let parity = loop {
        i += 3;
        // Check whether `i > 10`
        if i > 10 {
            break i % 2;
        }
    };
    // Match on `parity` and branch by pattern
    match parity {
        0 => println!("Ended on an even number"),
        _ => println!("Ended on an odd number"),
    }
}
Related Topics
{# common_mistakes/chapter_summary/browser_support: on Hindi pages the view already swaps in the hi_ translation fields (or blanks these out if untranslated), so this renders correctly for both languages without a lang_code check here. #}
आम गलतियां
  1. किसी for या while loop के अंदर break value; उपयोग करने की कोशिश करना -- सिर्फ loop इस तरह एक value return कर सकता है।
  2. किसी loop expression के result assign करते समय semicolon भूल जाना, क्योंकि पूरे loop {} को एक expression माना जाता है।
  3. उसी loop के अंदर अलग-अलग break statements से produce होने वाले types को mismatch करना, जो compile होने में fail होता है।
चैप्टर सारांश
  • break value; सिर्फ loop के अंदर काम करता है, क्योंकि सिर्फ loop की गारंटी है कि यह सिर्फ break के ज़रिए exit होता है।
  • break को पास की गई value पूरे loop expression की value बन जाती है।
  • उसी loop के अंदर सभी break statements को एक जैसे type की values produce करनी चाहिए।
  • यह pattern retry-until-success logic के लिए आम है जहां result सिर्फ loop खत्म होने पर ही पता चलता है।
🔒

Chapter Quiz — Complete all 7 topics to unlock

0/7 topics done

Complete these topics first:

Login to run this code

C/C++/Java/PHP execution requires a free account. Your code is saved — you'll land right back in the editor after logging in.