Macro ethaddr::address

source ·
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"),
}