forked from verus-lang/verus
verus source docs guide src reference-returns.md
743 B · 28 lines
Markdown

returns #

The returns clause is syntactic sugar for an ensures clause of a certain form. The returns clause can be provided instead of or in addition to an ensures clause.

The following:

fn example() -> return_type
    returns $expr
{
  ...
}

is equivalent to:

fn example() -> (return_name: return_type)
    ensures return_name == $expr
{
  ...
}

With the #[verifier::allow_in_spec] attribute #

The #[verifier::allow_in_spec] attribute can be applied to an executable function with a returns clause. This allows the function to be used in spec mode, where it is interpreted as equivalent to the specified return-value.