summaryrefslogtreecommitdiff
path: root/rust/src/binaryview.rs
diff options
context:
space:
mode:
authorGlenn Smith <glenn@vector35.com>2022-07-19 17:02:09 -0400
committerGlenn Smith <glenn@vector35.com>2022-09-29 21:02:21 -0400
commit2e18783a2f6e29c225d177e8a0fb866a9c9d85df (patch)
tree4921f16f509eaad788fafbda6ead42d79b05b82f /rust/src/binaryview.rs
parent83eddd3eddc54b6362b5db37da0d1a28a115e7db (diff)
[Rust API] General type fixes and additions
Diffstat (limited to 'rust/src/binaryview.rs')
-rw-r--r--rust/src/binaryview.rs18
1 files changed, 12 insertions, 6 deletions
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<Ref<BinaryView>> {
let handle = unsafe { BNGetParentView(self.as_ref().handle) };
@@ -847,11 +852,12 @@ pub trait BinaryViewExt: BinaryViewBase {
}
}
- fn get_metadata<T: TryFrom<&Metadata>, S: BnStrCompatible>(
- &self,
- key: S,
- ) -> Option<std::result::Result<T, T::Error>> {
- self.query_metadata(key).map(|md| T::try_from(md))
+ fn get_metadata<T, S: BnStrCompatible>(&self, key: S) -> Option<Result<T>>
+ where
+ T: for<'a> TryFrom<&'a Metadata>,
+ {
+ self.query_metadata(key)
+ .map(|md| T::try_from(md.as_ref()).map_err(|_| ()))
}
fn remove_metadata<S: BnStrCompatible>(&self, key: S) {