Provides the macros needed to write fvm contracts ## Basic Usage Macros can be used in contract for simplify contract preparation process, like this: ``` rust use fvm_macros::contract; use fvm_macros::storage; use fvm_std::collections::hyper_map::HyperMap; #[storage] pub struct SetHash { map: HyperMap, } #[contract] impl SetHash { fn new() -> Self { Self { map: HyperMap::new() } } pub fn set_hash(&mut self, key: String, value: String) { self.map.insert(key, value); } pub fn get_hash(&mut self, key: String) -> &String { self.map.get(&key).unwrap() } } ``` ## Contract Mode Now write contract have two mode: - **normal mode** Contract with normal mode limited data storage format, and user can write contract more convenient. User can use all macros except `advance_contract`. - **advance mode** Contract with advance mode not limited data storage format, and it must open advance feature with `fvm-std` and 'fvm-macros' lib to use this mode. The execute speed of contract in this mode would be fast then the contract in normal mode.