Spec fn signature
The general form of a spec
function signature takes the form:
spec fn function_name generics?(args...) -> return_type?
where_clause?
recommends_clause?
decreases_clause?
The recommends
clause
The recommends
clauses is a “soft precondition”, which is sometimes checked for the sake
of diagnostics, but is not a hard requirement for the function to be well-defined.
See this guide page for motivation and overview.
The decreases
clause
The decreases
clause is used to ensure that recursive definitions are well-formed.
Note that if the decreases
clauses has a when
-subclause, it will restrict the function definition
to the domain.
See the reference page for decreases
for more information,
or see the guide page on recursive functions for motivation and overview.