diff options
Diffstat (limited to 'test/rubygems/test_gem_ext_cargo_builder/custom_name/src/lib.rs')
-rw-r--r-- | test/rubygems/test_gem_ext_cargo_builder/custom_name/src/lib.rs | 30 |
1 files changed, 0 insertions, 30 deletions
diff --git a/test/rubygems/test_gem_ext_cargo_builder/custom_name/src/lib.rs b/test/rubygems/test_gem_ext_cargo_builder/custom_name/src/lib.rs deleted file mode 100644 index ca9cf4e656..0000000000 --- a/test/rubygems/test_gem_ext_cargo_builder/custom_name/src/lib.rs +++ /dev/null @@ -1,30 +0,0 @@ -#[macro_use] -extern crate rb_sys; - -use rb_sys::{rb_define_module, rb_define_module_function, rb_utf8_str_new, VALUE}; -use std::ffi::CString; - -ruby_extension!(); - -#[no_mangle] -unsafe extern "C" fn say_hello(_klass: VALUE) -> VALUE { - let cstr = CString::new("Hello world!").unwrap(); - - rb_utf8_str_new(cstr.as_ptr(), 12) -} - -#[allow(non_snake_case)] -#[no_mangle] -pub extern "C" fn Init_custom_name() { - let name = CString::new("CustomName").unwrap(); - let function_name = CString::new("say_hello").unwrap(); - // bindgen does not properly detect the arity of the ruby callback function, so we have to transmute - let callback = unsafe { - std::mem::transmute::<unsafe extern "C" fn(VALUE) -> VALUE, unsafe extern "C" fn() -> VALUE>( - say_hello, - ) - }; - let klass = unsafe { rb_define_module(name.as_ptr()) }; - - unsafe { rb_define_module_function(klass, function_name.as_ptr(), Some(callback), 0) } -} |