All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
- Correctly handle return statement inside closures.
- Update
synrequirement to2.
- Improve support for async functions and mutable borrows in contracts.
- Add effective contract type to invariant violation messages.
- improved hygiene around
selfparameters - fix contract messages containing
{}emitting warnings as they are interpreted as format strings
- better handling of mutable borrows and lifetime relationships for functions with contracts
- support for
impl Traitreturn types
preis nowrequirespostis nowensures
- Unused braces in function body generated code are removed
- Trait methods now handle attributes better.
- Implication operator is now
->.
- Added support for MIRAI assertions
- Added implication operator
- Pseudo-function
old(expr)which in a post-condition evaluates the expression before function execution. - Automatic generation of documentation containing all contracts.
- Errors inside functions/methods are now properly reported with the correct source location.
- internal handling of contracts is now done in a single proc-macro pass instead of one for each contract.
- Functions/methods with explicit return statements no longer skip
postconditions
contract_traitattribute to make all implementors of a trait respect contracts.
- Feature flags to override contract behavior.
disable_contractsignores all checksoverride_debugonly checks contracts in debug configurations.override_logonly prints using thelog-crate interface.
- attributes
pre/post/invariantanddebug_versions of each.