macro_rules! address { ($address:expr $(,)?) => { ... }; (~$address:expr $(,)?) => { ... }; }
Expand description
Macro to create Ethereum public address values from string literals that get verified at compile time. A compiler error will be generated if an invalid address is specified.
Examples
Basic usage:
for address in [
address!("0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE"),
address!("EeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE"),
] {
assert_eq!(address, Address([0xee; 20]));
}
Note that by default, the macro will verify address checksums:
ⓘ
let _ = address!("0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee");
However, this behaviour can be ignored by prefixing the address with a ~
:
let _ = address!(~"0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee");
Note that this can be used in const
contexts, but unfortunately not in
pattern matching contexts:
const ADDRESS: Address = address!("0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE");
ⓘ
match Address([0xee; 20]) {
address!("0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE") => println!("matches"),
_ => println!("doesn't match"),
}