From a826c589dfc10c542deba7ca3343a462e02d6bde Mon Sep 17 00:00:00 2001 From: Mason Reed Date: Sun, 4 May 2025 19:10:56 -0400 Subject: [Rust] Simplify `BnStrCompatible` trait Followup to https://github.com/Vector35/binaryninja-api/pull/5897/ This simplifies usage of the trait in user code, should just be able to `to_cstr` to get the cstr repr and then call `as_ptr`. Co-authored-by: Michael Krasnitski --- rust/src/project/file.rs | 14 +++++++------- rust/src/project/folder.rs | 16 ++++++++-------- 2 files changed, 15 insertions(+), 15 deletions(-) (limited to 'rust/src/project') diff --git a/rust/src/project/file.rs b/rust/src/project/file.rs index 35f25937..d1724ab0 100644 --- a/rust/src/project/file.rs +++ b/rust/src/project/file.rs @@ -1,6 +1,6 @@ use crate::project::{systime_from_bntime, Project, ProjectFolder}; use crate::rc::{CoreArrayProvider, CoreArrayProviderInner, Guard, Ref, RefCountable}; -use crate::string::{BnStrCompatible, BnString}; +use crate::string::{AsCStr, BnString}; use binaryninjacore_sys::{ BNFreeProjectFile, BNFreeProjectFileList, BNNewProjectFileReference, BNProjectFile, BNProjectFileExistsOnDisk, BNProjectFileExport, BNProjectFileGetCreationTimestamp, @@ -57,8 +57,8 @@ impl ProjectFile { } /// Set the name of this file - pub fn set_name(&self, value: S) -> bool { - let value_raw = value.into_bytes_with_nul(); + pub fn set_name(&self, value: S) -> bool { + let value_raw = value.to_cstr(); unsafe { BNProjectFileSetName( self.handle.as_ptr(), @@ -73,8 +73,8 @@ impl ProjectFile { } /// Set the description of this file - pub fn set_description(&self, value: S) -> bool { - let value_raw = value.into_bytes_with_nul(); + pub fn set_description(&self, value: S) -> bool { + let value_raw = value.to_cstr(); unsafe { BNProjectFileSetDescription( self.handle.as_ptr(), @@ -104,8 +104,8 @@ impl ProjectFile { /// Export this file to disk, `true' if the export succeeded /// /// * `dest` - Destination path for the exported contents - pub fn export(&self, dest: S) -> bool { - let dest_raw = dest.into_bytes_with_nul(); + pub fn export(&self, dest: S) -> bool { + let dest_raw = dest.to_cstr(); unsafe { BNProjectFileExport( self.handle.as_ptr(), diff --git a/rust/src/project/folder.rs b/rust/src/project/folder.rs index 316abeaf..b8881ddc 100644 --- a/rust/src/project/folder.rs +++ b/rust/src/project/folder.rs @@ -1,7 +1,7 @@ use crate::progress::{NoProgressCallback, ProgressCallback}; use crate::project::Project; use crate::rc::{CoreArrayProvider, CoreArrayProviderInner, Guard, Ref, RefCountable}; -use crate::string::{BnStrCompatible, BnString}; +use crate::string::{AsCStr, BnString}; use binaryninjacore_sys::{ BNFreeProjectFolder, BNFreeProjectFolderList, BNNewProjectFolderReference, BNProjectFolder, BNProjectFolderExport, BNProjectFolderGetDescription, BNProjectFolderGetId, @@ -46,8 +46,8 @@ impl ProjectFolder { } /// Set the name of this folder - pub fn set_name(&self, value: S) -> bool { - let value_raw = value.into_bytes_with_nul(); + pub fn set_name(&self, value: S) -> bool { + let value_raw = value.to_cstr(); unsafe { BNProjectFolderSetName( self.handle.as_ptr(), @@ -62,8 +62,8 @@ impl ProjectFolder { } /// Set the description of this folder - pub fn set_description(&self, value: S) -> bool { - let value_raw = value.into_bytes_with_nul(); + pub fn set_description(&self, value: S) -> bool { + let value_raw = value.to_cstr(); unsafe { BNProjectFolderSetDescription( self.handle.as_ptr(), @@ -88,7 +88,7 @@ impl ProjectFolder { /// Recursively export this folder to disk, returns `true' if the export succeeded /// /// * `dest` - Destination path for the exported contents - pub fn export(&self, dest: S) -> bool { + pub fn export(&self, dest: S) -> bool { self.export_with_progress(dest, NoProgressCallback) } @@ -99,10 +99,10 @@ impl ProjectFolder { /// * `progress` - [`ProgressCallback`] that will be called as contents are exporting pub fn export_with_progress(&self, dest: S, mut progress: P) -> bool where - S: BnStrCompatible, + S: AsCStr, P: ProgressCallback, { - let dest_raw = dest.into_bytes_with_nul(); + let dest_raw = dest.to_cstr(); let success = unsafe { BNProjectFolderExport( -- cgit v1.3.1