macro_rules! input {
(@inner $input:expr, $cursor:expr,) => { ... };
(@size $size:expr, ) => { ... };
(@inner $input:expr, $cursor:expr, $var:ident: u8, $($rest:tt)*) => { ... };
(@size $size:expr, $var:ident: u8, $($rest:tt)*) => { ... };
(@inner $input:expr, $cursor:expr, $var:ident: u64, $($rest:tt)*) => { ... };
(@size $size:expr, $var:ident: u64, $($rest:tt)*) => { ... };
(@inner $input:expr, $cursor:expr, $var:ident: u32, $($rest:tt)*) => { ... };
(@size $size:expr, $var:ident: u32, $($rest:tt)*) => { ... };
(@inner $input:expr, $cursor:expr, $var:ident: [u8],) => { ... };
(@inner $input:expr, $cursor:expr, $var:ident: [u8; $n:expr], $($rest:tt)*) => { ... };
(@inner $input:expr, $cursor:expr, $var:ident: &[u8; $n:expr], $($rest:tt)*) => { ... };
(@size $size:expr, $var:ident: [u8; $n:expr], $($rest:tt)*) => { ... };
(@size $size:expr, $var:ident: &[u8; $n:expr], $($rest:tt)*) => { ... };
($buffer:ident, $size:expr, $($rest:tt)*) => { ... };
($buffer: ident, $($rest:tt)*) => { ... };
($($rest:tt)*) => { ... };
}
Expand description
Utility macro to read input passed to a contract.
Example:
ⓘ
input!(
var1: u32, // [0, 4) var1 decoded as u32
var2: [u8; 32], // [4, 36) var2 decoded as a [u8] slice
var3: u8, // [36, 37) var3 decoded as a u8
);
// Input and size can be specified as well:
input!(
input, // input buffer (optional)
512, // input size (optional)
var4: u32, // [0, 4) var4 decoded as u32
var5: [u8], // [4, ..) var5 decoded as a [u8] slice
);