Basic concepts

Every Creusot macro will erase themselves when compiled normally: they only exist when using cargo creusot.

If you need to have Creusot-only code, you can use the #[cfg(creusot)] attribute.

Note that you must explicitly use the creusot_contracts crate in your code (which should be the case once you actually prove things, but not necessarily when you initially set up a project), such as with the line:

#![allow(unused)]
fn main() {
use creusot_contracts::*;
}

or you will get a compilation error complaining that the creusot_contracts crate is not loaded.