Compile time abi encoding and decoding could be useful. Perhaps something like ```rust let (address, value) = abi_decode!( "transfer(address,uint256)", "a9059cbb000000..." ); ``` and ```rust let calldata = abi_encode!( "transfer(address,uint256)", ("abc...", 42), ); ```