evmc_sys/
lib.rs

1/* EVMC: Ethereum Client-VM Connector API.
2 * Copyright 2019 The EVMC Authors.
3 * Licensed under the Apache License, Version 2.0.
4 */
5
6#![allow(non_upper_case_globals)]
7#![allow(non_camel_case_types)]
8#![allow(non_snake_case)]
9
10include!(concat!(env!("OUT_DIR"), "/bindings.rs"));
11
12// TODO: add `.derive_default(true)` to bindgen instead?
13
14impl Default for evmc_address {
15    fn default() -> Self {
16        evmc_address { bytes: [0u8; 20] }
17    }
18}
19
20impl Default for evmc_bytes32 {
21    fn default() -> Self {
22        evmc_bytes32 { bytes: [0u8; 32] }
23    }
24}
25
26#[cfg(test)]
27mod tests {
28    use std::mem::size_of;
29
30    use super::*;
31
32    #[test]
33    fn container_new() {
34        // TODO: add other checks from test/unittests/test_helpers.cpp
35        assert_eq!(size_of::<evmc_bytes32>(), 32);
36        assert_eq!(size_of::<evmc_address>(), 20);
37        assert!(size_of::<evmc_result>() <= 64);
38        assert!(size_of::<evmc_vm>() <= 64);
39    }
40}