An abi
declaration, which declares an interface for a contract
to implement or for a caller to use to call a contract.
An impl trait, or impl self of methods without a trait.
like impl MyType { fn foo { .. } }
A declaration of contract storage. Only valid within contract contexts.
All values in this struct are mutable and persistent among executions of the same contract deployment.
An individual field in a storage declaration.
A type annotation and initializer value must be provided. The initializer value must be a
constant expression. For now, that basically means just a literal, but as constant folding
improves, we can update that.