aboutsummaryrefslogtreecommitdiff
path: root/tests/ffi/cast.rs
diff options
context:
space:
mode:
Diffstat (limited to 'tests/ffi/cast.rs')
-rw-r--r--tests/ffi/cast.rs14
1 files changed, 14 insertions, 0 deletions
diff --git a/tests/ffi/cast.rs b/tests/ffi/cast.rs
new file mode 100644
index 00000000..30ecb6a8
--- /dev/null
+++ b/tests/ffi/cast.rs
@@ -0,0 +1,14 @@
+use std::os::raw::c_char;
+use std::slice;
+
+pub fn c_char_to_unsigned(slice: &[c_char]) -> &[u8] {
+ let ptr = slice.as_ptr().cast::<u8>();
+ let len = slice.len();
+ unsafe { slice::from_raw_parts(ptr, len) }
+}
+
+pub fn unsigned_to_c_char(slice: &[u8]) -> &[c_char] {
+ let ptr = slice.as_ptr().cast::<c_char>();
+ let len = slice.len();
+ unsafe { slice::from_raw_parts(ptr, len) }
+}