# [−]Keyword loop

Loop indefinitely.

`loop` is used to define the simplest kind of loop supported in Rust. It runs the code inside it until the code uses `break` or the program exits.

    loop {
        println!("hello world forever!");
    }

    let mut i = 1;
    loop {
        println!("i is {}", i);
        if i > 100 {
            break;
        }
        i *= 2;
    }
    assert_eq!(i, 128);Run

Unlike the other kinds of loops in Rust (`while`, `while let`, and `for`), loops can be used as expressions that return values via `break`.

    let mut i = 1;
    let something = loop {
        i *= 2;
        if i > 100 {
            break i;
        }
    };
    assert_eq!(something, 128);Run

Every `break` in a loop has to have the same type. When it's not explicitly giving something, `break;` returns `()`.

For more information on `loop` and loops in general, see the Reference.