Keyword auto-imported

decreases

Source: compiler/src/builtin_docs/keywords.md

States an int that every iteration of a while loop makes smaller, without going negative.

It proves the loop ends; a violation panics with (went negative) or (did not decrease). Contextual: only a keyword in a while header.

fn sum_to(int n) -> int {
    let i = 0;
    let s = 0;
    while i < n
        decreases n - i
    {
        s = s + i;
        i = i + 1;
    }
    return s;
}

See also#

  • int
  • fn: Declares a function, a method, or (written in an expression) an anonymous function.
  • let: Declares a mutable local variable.
  • const: Declares a binding that cannot be reassigned: a local, a module constant, or a class field that is set only by new.
  • static: Declares a module-level or class-level slot shared by the whole program, or a method without self.
  • readonly: A read-only view of a value: nothing reachable through it can be changed.
  • if: Runs a block when a bool condition is true.
  • else: Introduces the branch of an if that runs when its condition is false (or its pattern does not match).
↑ ↓ navigate ↵ open