Move Rust symbols required by C++ to a separate Buck target
Closes #168.
diff --git a/src/rust_string.rs b/src/rust_string.rs
index 6f3e64b..a923ced 100644
--- a/src/rust_string.rs
+++ b/src/rust_string.rs
@@ -1,7 +1,4 @@
-use std::mem::{self, ManuallyDrop, MaybeUninit};
-use std::ptr;
-use std::slice;
-use std::str;
+use std::mem;
#[repr(C)]
pub struct RustString {
@@ -30,46 +27,5 @@
}
}
-#[export_name = "cxxbridge03$string$new"]
-unsafe extern "C" fn string_new(this: &mut MaybeUninit<String>) {
- ptr::write(this.as_mut_ptr(), String::new());
-}
-
-#[export_name = "cxxbridge03$string$clone"]
-unsafe extern "C" fn string_clone(this: &mut MaybeUninit<String>, other: &String) {
- ptr::write(this.as_mut_ptr(), other.clone());
-}
-
-#[export_name = "cxxbridge03$string$from"]
-unsafe extern "C" fn string_from(
- this: &mut MaybeUninit<String>,
- ptr: *const u8,
- len: usize,
-) -> bool {
- let slice = slice::from_raw_parts(ptr, len);
- match str::from_utf8(slice) {
- Ok(s) => {
- ptr::write(this.as_mut_ptr(), s.to_owned());
- true
- }
- Err(_) => false,
- }
-}
-
-#[export_name = "cxxbridge03$string$drop"]
-unsafe extern "C" fn string_drop(this: &mut ManuallyDrop<String>) {
- ManuallyDrop::drop(this);
-}
-
-#[export_name = "cxxbridge03$string$ptr"]
-unsafe extern "C" fn string_ptr(this: &String) -> *const u8 {
- this.as_ptr()
-}
-
-#[export_name = "cxxbridge03$string$len"]
-unsafe extern "C" fn string_len(this: &String) -> usize {
- this.len()
-}
-
const_assert_eq!(mem::size_of::<[usize; 3]>(), mem::size_of::<String>());
const_assert_eq!(mem::align_of::<usize>(), mem::align_of::<String>());