From 2e18783a2f6e29c225d177e8a0fb866a9c9d85df Mon Sep 17 00:00:00 2001 From: Glenn Smith Date: Tue, 19 Jul 2022 17:02:09 -0400 Subject: [Rust API] General type fixes and additions --- rust/src/binaryview.rs | 18 ++++++++++++------ 1 file changed, 12 insertions(+), 6 deletions(-) (limited to 'rust/src/binaryview.rs') diff --git a/rust/src/binaryview.rs b/rust/src/binaryview.rs index e64dbb61..43eb1dfc 100644 --- a/rust/src/binaryview.rs +++ b/rust/src/binaryview.rs @@ -18,7 +18,7 @@ //! TODO : Mirror the Python docs for this use binaryninjacore_sys::*; -use std::convert::TryFrom; +use std::convert::{TryFrom, TryInto}; pub use binaryninjacore_sys::BNModificationStatus as ModificationStatus; @@ -144,6 +144,11 @@ pub trait BinaryViewExt: BinaryViewBase { } } + fn type_name(&self) -> BnString { + let ptr: *mut c_char = unsafe { BNGetViewType(self.as_ref().handle) }; + unsafe { BnString::from_raw(ptr) } + } + fn parent_view(&self) -> Result> { let handle = unsafe { BNGetParentView(self.as_ref().handle) }; @@ -847,11 +852,12 @@ pub trait BinaryViewExt: BinaryViewBase { } } - fn get_metadata, S: BnStrCompatible>( - &self, - key: S, - ) -> Option> { - self.query_metadata(key).map(|md| T::try_from(md)) + fn get_metadata(&self, key: S) -> Option> + where + T: for<'a> TryFrom<&'a Metadata>, + { + self.query_metadata(key) + .map(|md| T::try_from(md.as_ref()).map_err(|_| ())) } fn remove_metadata(&self, key: S) { -- cgit v1.3.1