From 64ec5a75337e5f451b8a08023fcaec65545b2654 Mon Sep 17 00:00:00 2001 From: Sina Mahmoodi Date: Wed, 22 May 2019 11:18:04 +0200 Subject: [PATCH] Add is_account_empty as experimental method Mv isAccountEmpty to experimental namespace Add experimental as a cargo feature Make experimental native methods private --- src/experimental.rs | 18 ++++++++++++++++++ src/lib.rs | 3 +++ 2 files changed, 21 insertions(+) create mode 100644 src/experimental.rs diff --git a/src/experimental.rs b/src/experimental.rs new file mode 100644 index 0000000..66b4178 --- /dev/null +++ b/src/experimental.rs @@ -0,0 +1,18 @@ +//! Experimental methods. + +use super::*; + +mod native { + extern "C" { + pub fn experimental_isAccountEmpty(addressOffset: *const u32) -> u32; + } +} + +pub fn is_account_empty(address: &Address) -> bool { + let ret = unsafe { native::experimental_isAccountEmpty(address.bytes.as_ptr() as *const u32) }; + if ret != 0 && ret != 1 { + panic!(); + } + + ret == 1 +} diff --git a/src/lib.rs b/src/lib.rs index 145c623..5ff61c2 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -37,6 +37,9 @@ pub mod bignum; #[cfg(not(feature = "std"))] pub mod convert; +#[cfg(feature = "experimental")] +pub mod experimental; + #[cfg(feature = "std")] use std::vec::Vec;