summaryrefslogtreecommitdiff
path: root/rust/src/metadata.rs
diff options
context:
space:
mode:
authorMason Reed <mason@vector35.com>2025-05-04 19:47:55 -0400
committerMason Reed <35282038+emesare@users.noreply.github.com>2025-05-12 17:45:24 -0400
commit788a8b7091bbdde77817030e0836d7a7a786fd99 (patch)
tree40e8f8d3c870788259a5acb5d14995cdc1656979 /rust/src/metadata.rs
parenta826c589dfc10c542deba7ca3343a462e02d6bde (diff)
[Rust] Simplify usage surrounding c strings
`cstring.as_ref().as_ptr() as *const c_char` -> `cstring.as_ptr()` `cstring.as_ref().as_ptr() as *mut _` -> `cstring.as_ptr()` `cstring.as_ptr() as *const c_char` -> `cstring.as_ptr()` With a few fixes for cstrings that might be dropped prematurely.
Diffstat (limited to 'rust/src/metadata.rs')
-rw-r--r--rust/src/metadata.rs52
1 files changed, 13 insertions, 39 deletions
diff --git a/rust/src/metadata.rs b/rust/src/metadata.rs
index c31e806b..cc10885a 100644
--- a/rust/src/metadata.rs
+++ b/rust/src/metadata.rs
@@ -271,12 +271,8 @@ impl Metadata {
if self.get_type() != MetadataType::KeyValueDataType {
return Err(());
}
- let ptr: *mut BNMetadata = unsafe {
- BNMetadataGetForKey(
- self.handle,
- key.to_cstr().as_ref().as_ptr() as *const c_char,
- )
- };
+ let raw_key = key.to_cstr();
+ let ptr: *mut BNMetadata = unsafe { BNMetadataGetForKey(self.handle, raw_key.as_ptr()) };
if ptr.is_null() {
return Ok(None);
}
@@ -295,14 +291,8 @@ impl Metadata {
if self.get_type() != MetadataType::KeyValueDataType {
return Err(());
}
-
- unsafe {
- BNMetadataSetValueForKey(
- self.handle,
- key.to_cstr().as_ref().as_ptr() as *const c_char,
- value.handle,
- )
- };
+ let raw_key = key.to_cstr();
+ unsafe { BNMetadataSetValueForKey(self.handle, raw_key.as_ptr(), value.handle) };
Ok(())
}
@@ -320,12 +310,8 @@ impl Metadata {
return Err(());
}
- unsafe {
- BNMetadataRemoveKey(
- self.handle,
- key.to_cstr().as_ref().as_ptr() as *const c_char,
- )
- };
+ let raw_key = key.to_cstr();
+ unsafe { BNMetadataRemoveKey(self.handle, raw_key.as_ptr()) };
Ok(())
}
}
@@ -396,21 +382,15 @@ impl From<f64> for Ref<Metadata> {
impl From<String> for Ref<Metadata> {
fn from(value: String) -> Self {
- unsafe {
- Metadata::ref_from_raw(BNCreateMetadataStringData(
- value.to_cstr().as_ptr() as *const c_char
- ))
- }
+ let raw_value = value.to_cstr();
+ unsafe { Metadata::ref_from_raw(BNCreateMetadataStringData(raw_value.as_ptr())) }
}
}
impl From<&str> for Ref<Metadata> {
fn from(value: &str) -> Self {
- unsafe {
- Metadata::ref_from_raw(BNCreateMetadataStringData(
- value.to_cstr().as_ptr() as *const c_char
- ))
- }
+ let raw_value = value.to_cstr();
+ unsafe { Metadata::ref_from_raw(BNCreateMetadataStringData(raw_value.as_ptr())) }
}
}
@@ -448,10 +428,7 @@ impl<S: AsCStr> From<HashMap<S, Ref<Metadata>>> for Ref<Metadata> {
fn from(value: HashMap<S, Ref<Metadata>>) -> Self {
let data: Vec<(S::Result, Ref<Metadata>)> =
value.into_iter().map(|(k, v)| (k.to_cstr(), v)).collect();
- let mut keys: Vec<*const c_char> = data
- .iter()
- .map(|(k, _)| k.as_ref().as_ptr() as *const c_char)
- .collect();
+ let mut keys: Vec<*const c_char> = data.iter().map(|(k, _)| k.as_ptr()).collect();
let mut values: Vec<*mut BNMetadata> = data.iter().map(|(_, v)| v.handle).collect();
unsafe {
@@ -472,10 +449,7 @@ where
fn from(value: &[(S, T)]) -> Self {
let data: Vec<(S::Result, Ref<Metadata>)> =
value.iter().map(|(k, v)| (k.to_cstr(), v.into())).collect();
- let mut keys: Vec<*const c_char> = data
- .iter()
- .map(|(k, _)| k.as_ref().as_ptr() as *const c_char)
- .collect();
+ let mut keys: Vec<*const c_char> = data.iter().map(|(k, _)| k.as_ptr()).collect();
let mut values: Vec<*mut BNMetadata> = data.iter().map(|(_, v)| v.handle).collect();
unsafe {
@@ -552,7 +526,7 @@ impl<S: AsCStr> From<Vec<S>> for Ref<Metadata> {
}
let mut pointers = vec![];
for r in &refs {
- pointers.push(r.as_ref().as_ptr() as *const c_char);
+ pointers.push(r.as_ptr());
}
unsafe {
Metadata::ref_from_raw(BNCreateMetadataStringListData(