diff --git a/Cargo.toml b/Cargo.toml index e80b73c..ce9bc0f 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -14,3 +14,4 @@ wee_alloc = "0.4.4" default = [ "std" ] std = [] debug = [] +experimental = [] diff --git a/src/experimental.rs b/src/experimental.rs new file mode 100644 index 0000000..b0a8e7d --- /dev/null +++ b/src/experimental.rs @@ -0,0 +1,18 @@ +//! Experimental methods. + +use super::*; + +pub 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 3420c77..69401e9 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -32,6 +32,9 @@ pub mod debug; #[cfg(not(feature = "std"))] pub mod convert; +#[cfg(feature = "experimental")] +pub mod experimental; + #[cfg(feature = "std")] use std::vec::Vec;